私はCで次のコードを持っています。
void setNonBlocking(SOCKET fd){
int flags;
if (-1 == (flags = fcntl(fd, F_GETFL, 0)))
flags = 0;
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
}
int main(){
int sock;
connect(sock, .....);
setNonBlocking(sock);
....
close(sock);
//we will do something here but the application exits in/after the close operation
}
setNonBlocking 関数を使用して非ブロッキング モードでソケットを使用しています。ソケットを閉じると、アプリケーションはセグメンテーション違反などなしにすぐに終了します。setNonBlocking 関数を使用しない場合、この問題は発生しません。
この問題を起こさずにノンブロッキング ソケットを閉じるにはどうすればよいですか?