- 2007/02/05 Mon
-
LISTEN状態のソケットを持つプロセスがforkを使用するとLISTEN状態まで複写され、親が生きている間は親が優先されるので特に問題はないものの、親が不慮の事故で死ぬと長男に、長男が死んだら次兄にと次々とLISTEN状態が引き回された挙句に子が親と同じディスクリプタ番号のソケットを持っているとそのソケットでconnectを受け付けられてしまったりとかそんな感じの動作を確認したのが年末の話。
今度はLISTEN状態が消失。
どうもexecに失敗して子を破棄すると、親のLISTEN状態を道連れにしているような。
ソケットはそのままでLISTEN状態だけってのが腑に落ちないですが、挙動を見る限りはそうとしか。getsockoptでSO_ACCEPTCONNを取得すると0。acceptするとEINVAL。
えー。