|
分類:[C/C++]
WSock32.libを使用して、以下のようなサーバプログラムを作成しています。 1.listenソケットに、WSAAsyncSelectで非同期設定。 通知内容は、FD_ACCEPTとFD_CLOSE。 2.FD_ACCEPTのタイミングで、子プログラムをCreateProcessで起動。 ハンドル継承フラグ=TRUE。 引数でacceptソケットを渡す。 3.acceptソケットをクローズ。 4.2へ。
2の後、子プログラム側で、acceptソケットをshutdown(how=2)すると、 サーバプログラム側のFD_CLOSEイベントが発生してしまいます。 (wParam=acceptソケット)
listenソケットに対して、WSAAsyncSelectしているので、 acceptソケットがクローズされても、FD_CLOSEは発生しないと思っていましたが、 こういう仕様なのでしょうか?
ご教授の程、お願いします。
実行環境:WindowsXP 開発環境:WSock32.lib、VC6(VC8でも同じ)
|