dポイントプレゼントキャンペーン実施中!

ちょっと試せば分かるのでしょうが、試せる環境が無いのでご存知の方がおられましたらお知恵を貸してください。
Solarisが稼働中にネットワークケーブルが抜けた場合などネットワークの切断が発生した場合、それを検出して発生するシグナルはあるのでしょうか?(SIGURGあたりでしょうか??)

A 回答 (2件)

接続が切れているソケットに対して、書き込みを行うとSIGPIPEが発生したと思います。



私も環境は無いため確認はできないのですが、Solarisのオンラインマニュアルにもそのような記述があります。
参考URLはSolarisのsocketのオンラインマニュアルです。

参考URL:http://docs.sun.com/app/docs/doc/816-5170/socket …
    • good
    • 0
この回答へのお礼

お礼遅くなり申し訳ありません。
実機で確認できる機会がありましたので、アドバイスの内容を踏まえて確認しましたところ期待通りSIGPIPEが帰ってきました。
# socket()のオンラインマニュアルに書かれているのは完全に見落としていました。
# お恥ずかしい限りです・・・

ご回答ありがとうございました。

お礼日時:2008/10/13 22:36

最近、通信プログラム作ってないのでうろ覚えです。



シグナルは上がりません。そのかわりソケット(TCP接続)作成時に
SO_KEEPALIVE オプションを付加しておくと、定期的(*1)に接続可能か
否かをOSレベルでチェックしてくれます。切断されてる場合は、
読み込みバイトが0バイトだったような・・・
ただ、そのネットワークケーブルで複数の計算機が同じポートで通信
してることが前提です。
(*1):定期的な時間はOSによって異なります。変更可能なOSもあります。

事情を知りませんが、SIGURGは使わなくてもよいかと思います。
    • good
    • 0
この回答へのお礼

お礼が遅くなりましたが、アドバイスありがとうございました。
既存プログラムの関係でどうしてもシグナルをキャッチしなければならなかったのでこのような質問をさせていただきました。
SO_KEEPALIVEを使う方法につきましては今後の参考にさせていただきます。
ありがとうございました!

お礼日時:2008/10/13 22:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!