popen
プロセス PA から (読み取り専用)プロセス PO を生成するとします。次にpclose()
PA側のパイプ。
PO の側では、標準出力がまだ使用可能かどうかを判断するにはどうすればよいwrite()
ですか?
PO 側で SIGPIPE をキャッチしようとしても無駄だったことに注意してください。
UPDATED :fstat(1, &buf)
成功せずに使用してみました。
更新: PO を介してこの状態を検出する必要がある理由は、PA から PO の PID にアクセスできないためです (したがって、それを強制終了することはできません)。さらに、PO は、PA の障害に直面した場合、つまり単独で終了する場合に、より堅牢になることを望みます。
解決策: を使用socketpair
しfork
ました。プロセスを制御しようとするpopen
ことは、(少なくとも私にとっては)悪夢であることが判明しました。 貢献してくれたすべての人に感謝します!