私は、親プロセスがいくつかのスレッド(プラグイン)を起動するアプリケーションを持っています。そのうち1人は定期的に子プロセスを開始し、popen
を使用してパイプを介して出力を読み取ります。子プロセスのパイプライン処理は、親プロセスへのシグナルでどのように動作しますか?
また、親プロセスは、SIGUSR1によって停止されている可能性があります。すべてのプラグインは、パイプを使用するものを除いて良好に停止します。read
関数のどこかにSIGSEGVをスローします。
これは、子プロセスがSIGUSR1で停止してパイプが無効になるためだと思います。私は正しい?どうすればこの問題を解決できますか?
読み取りプロセスから親プロセスがSIGSEGVによって強制終了されることを確認できますか? –
@ ZangMingJie、はい、シグナルのハンドラがあるため実際には殺されません。どのようにしても、親プロセスは 'read'を呼び出している間にSIGSEGVを取得しました。 –