より大きなコードの一部として ping コマンドを実装するコードがあります。
シナリオは次のとおりです。
- 「-c」または「-t」オプションを指定して ping を実行します。
- 続いて Ctrl+C で終了
- 約 1 時間後、ping が失敗することがわかりました。
「ソケット」呼び出しは次のとおりです。 sock = socket(IP_AF_INET, IP_SOCK_RAW, IP_IPPROTO_ICMP);
recvfrom を呼び出す前に、ソケットは 1 秒のタイムアウト値に設定されます。ping が失敗すると、errno が EAGAIN に設定されていることがわかります。
いくつかのテストを試しましたが、Ctrl+C を押したときにソケットが閉じられていないことが原因であると考えています。
私の質問は次のとおりです。上記のシナリオの場合のように、ソケットを閉じないと直面する可能性のある問題は何ですか?