• ベストアンサー

パイプが切断されました

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

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

tanimaru
質問者

お礼

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

関連するQ&A

専門家に質問してみよう