スリープ中のプロセスは TCP 接続を受け入れますか?

スリープ中のプロセスは TCP 接続を受け入れますか?

プロセスに STOP シグナルを送信した後、プロセスは期待どおりに動作を停止しますが、TCP 接続は引き続き受け入れます。それで、それはとにかく動作しているのでしょうか?

答え1

Unix プロセスが IP アドレスとポートをストリーム ソケットにバインドすると、カーネルはそのアドレス/ポートの TCP 接続の受け入れを開始し、ソケットがバインド解除されるか閉じられるまで継続します。プロセスは accept() システム コールを介して接続にアクセスしますが、接続は関係なく行われます。最初の TCP ハンドシェイクの後は、accept() が呼び出されてプロセスが接続されたソケットの使用を開始するまで、接続はアイドル状態になります。また、カーネルは accept() が呼び出される前に、システム固有の量のデータを受け入れ、バッファリングし、確認応答します。

したがって、接続は行われていますが、プロセスが停止している間は実際のアクティビティ (メールの送信、Web ページの配信など) は行われません。

関連情報