close() ブロックできますか?

close() ブロックできますか?

たとえば、パイプまたはソケットを閉じて、パイプまたはソケットの書き込みバッファにまだ相手プロセスから読み込まれていないデータがある場合は、そのデータを読み込むか、別のプロセスが終了するまでclose()ブロックを実行します。 ?

ベストアンサー1

うんcloseブロック可能:

O_NONBLOCKが設定されておらず、STREAMへのシグナルが発行されず、モジュールの書き込みキューにデータがある場合、close()は、すべての出力ストリームが解放される前に(各モジュールとドライバに対して)指定されていない時間待機する必要があります。 。

そして:

fildes がソケットを参照する場合、close() はソケットを破壊します。ソケットが接続モードにあり、待機時間がゼロ以外のソケットに対してSO_LINGERオプションが設定されていて、ソケットに送信されていないデータがある場合、close()は現在の待ち時間間隔中にすべてのデータが送信されるまでブロックされます。

おすすめ記事