終了したプロセスのTCPポートの再利用

終了したプロセスのTCPポートの再利用

LinuxにTCPサーバープロセスがあります。時には終了することがあり、SIGKILLその後親プロセスが再開されます。私は子供が死ぬ方法を変えることはできません。時々(約100回ごとに)サーバーポートがまだ使用されているため(bind返されますEADDRINUSE)、再起動は失敗します。サーバーで明示的に設定したソケットオプションは、、O_RDWRおよびO_NONBLOCK TCP_NODELAYです。SO_REUSEADDRTCP_USER_TIMEOUT

私の質問は次のとおりです

  1. 非ブロックTCPソケット操作を持つプロセスが終了すると、そのバッファがフラッシュされ、親プロセスがバッファをTIME_WAIT取得する前にポートに挿入されますかSIGCHILD

  2. 親プロセスがSIGCHILD終了した子プロセスを取得すると、子プロセスが使用するポートを再利用できることが保証されますかSO_REUSEADDR

  3. この動作はLinuxカーネルとMacによって異なりますか?

ベストアンサー1

おすすめ記事