プロセス A とプロセス B の 2 つのプロセスがソケット経由で通信しています。
プロセス B はselect()
呼び出しを使用して、ソケットの準備ができているかどうかを確認しています。I/O.
プロセス A が突然強制終了されます。B側ソケットはどうなるの?B 側のソケットは、A のソケットが使用できなくなったことを自動的に検出し、select()
-1 を返しEABDF
ます。またはselect()
通話は永久にブロックされたままになります。
select()
戻り、ソケットが読み取り可能であると言います。ソケットを読み取ると、-1 (および errno の対応するエラー) または 0 (EOF) が返されます。
選択するとロックが解除され、エラー ケースまたは読み取りケースが返されます。
2 つの側の間にハートビートがない場合、tcp ソケットはしばらくの間半分開いたままになります。最後に、タイムアウト設定に応じて、tcp 接続がタイムアウトします。参照: http://en.wikipedia.org/wiki/Half-open_connection