- ベストアンサー
ネットワーク切断時のシグナルは?
ちょっと試せば分かるのでしょうが、試せる環境が無いのでご存知の方がおられましたらお知恵を貸してください。 Solarisが稼働中にネットワークケーブルが抜けた場合などネットワークの切断が発生した場合、それを検出して発生するシグナルはあるのでしょうか?(SIGURGあたりでしょうか??)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
接続が切れているソケットに対して、書き込みを行うとSIGPIPEが発生したと思います。 私も環境は無いため確認はできないのですが、Solarisのオンラインマニュアルにもそのような記述があります。 参考URLはSolarisのsocketのオンラインマニュアルです。
その他の回答 (1)
- splwtr
- ベストアンサー率16% (75/461)
回答No.1
最近、通信プログラム作ってないのでうろ覚えです。 シグナルは上がりません。そのかわりソケット(TCP接続)作成時に SO_KEEPALIVE オプションを付加しておくと、定期的(*1)に接続可能か 否かをOSレベルでチェックしてくれます。切断されてる場合は、 読み込みバイトが0バイトだったような・・・ ただ、そのネットワークケーブルで複数の計算機が同じポートで通信 してることが前提です。 (*1):定期的な時間はOSによって異なります。変更可能なOSもあります。 事情を知りませんが、SIGURGは使わなくてもよいかと思います。
質問者
お礼
お礼が遅くなりましたが、アドバイスありがとうございました。 既存プログラムの関係でどうしてもシグナルをキャッチしなければならなかったのでこのような質問をさせていただきました。 SO_KEEPALIVEを使う方法につきましては今後の参考にさせていただきます。 ありがとうございました!
お礼
お礼遅くなり申し訳ありません。 実機で確認できる機会がありましたので、アドバイスの内容を踏まえて確認しましたところ期待通りSIGPIPEが帰ってきました。 # socket()のオンラインマニュアルに書かれているのは完全に見落としていました。 # お恥ずかしい限りです・・・ ご回答ありがとうございました。