accept()
ブロッキング ソケットで呼び出しを中断する方法を探しています。これはライブラリにあることを意図しており、ユーザーシグナルを乱雑にしたくないため、シグナルを使用することはオプションではありません。使用select()
は別のオプションですが、さまざまな理由で、私の場合はあまり魅力的ではありません。
可能であれば、ソケットが呼び出しでブロックされている間に、別のスレッドから( fcntl()
and を使用して) ソケットを非ブロック モードに設定するとうまくいきます。予想される動作は、呼び出しがorで返されることです。O_NONBLOCK
accept()
accept()
EAGAIN
EWOULDBLOCK
errno
それは本当にそのように機能しますか?安全ですか?ポータブル?
WSAIoctl()
この方法の Windows への適用可能性 (およびを使用する必要がある場合FONBIO
) について知っている場合は、私も興味があります。