コンテンツへスキップ
uencoder

SO_LINGER

SO_LINGER は close() の動作を制御する。RST ですぐに切断するか、キューのデータが(タイムアウト付きで)排出されるのを待ってから閉じるかを選べる。

目的

シャットダウン前に確実に配送するか、接続を即座に解放するかのいずれかが必要な場面で、close() のセマンティクスを形作る。

メカニズム

linger オン+タイムアウトでは、close() はデータ送信完了かタイムアウトまでブロックし、その後 RST を送る。linger オフ(デフォルト)では close() は即座に戻り、残りのデータはバックグラウンドで送信される。異常切断には即時 RST を使う。

ユースケース

  • 接続のグレースフルシャットダウン
  • 接続の即時リセット
  • サーバーのシャットダウン

関連ツール

References