0

ソケットプログラミングとマルチスレッドに基づいて、C言語で書かれたツールがあります。ツールを単純に実行すると、エラーは発生せず、ツールは問題なく機能します。

しかし、ツールをデバッグ モードで実行すると、スレッドを切り替えると SIGPIPE シグナルが発生するため、ツールからサーバーにデータを転送できませんでした。

SIGNAL(SIGPIPE, SIG_IGN) を使用して SIGPIPE を処理すると、スレッドが機能しますか?

私が理解している限り、これはスレッド間のプロセス間通信の失敗が原因で発生しています。もしそうなら、どうすればそのようなマルチスレッドアプリケーションをデバッグできますか?

この問題を処理する方法を教えてください。

4

1 に答える 1

0

これは、慎重にスレッドに足を踏み入れることで解決されました。このツールはプロセスだけでなくスレッドも作成するため、不適切な gdbinit 設定とステッピングにより SIGPIPE シグナルが発生します。

これは、こちらの他の関連記事に示されています。

于 2014-05-30T12:06:42.267 に答える