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