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

Linux上のサーバプログラムとWindows上のクライアントプログラムをLAN上で通信させているのですが、
クライアントから切断すると必ずサーバ側で「パイプが切断されました」と表示され強制終了してしまいます。
原因や解析方法をご教授ください。

A 回答 (1件)

 そのサーバーソフトは自作ですか?


 サーバーからクライアントに向けて、そのパイプ(ソケット)を通してデータを送っていますか。閉じたパイプに書き込むと、シグナル SIG_PIPE が発生し、プロセスが終了してしまいます。SIG_PIPE を無視するかキャプチャするようにプログラムしてください。(「パイプが切断されました」と表示されるのだから SIG_PIPE はキャプチャしているようにも思えますが…)
 シグナルを無視/キャプチャするには signal(2) などのシステムコールを使ってください。
    • good
    • 0
この回答へのお礼

その後自分でも調べ、signal(SIGPIPE, SIG_IGN);
をcallすることにより事象は発生しなくなりました。
ご指摘のとおり自作サーバーソフトからソケットで
sendto/recvfromしていますのでビンゴです!
ありがとうございました。

お礼日時:2005/09/07 09:17

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