パイプからの読み取りとファイルへの書き込みを処理するフォークされたプロセス (「pipe2file」) を使用して、プログラム (プログラム「exec'ed」) の出力をリダイレクトしています。
「exec'ed」プログラムが強制終了され、その待機ステータスが取得された場合、「pipe2file」プロセスに対して同じことを行う必要があります。
だから、私が正確にやっていることはこれです:
- 使用したパイプの端を閉じる
- 経由でキル信号を送信する
kill(pipe2file, SIGKILL)
- waitpid を使用して、このような終了ステータスを取得します
waitpid(pipe2file, &status, 1)
- でステータスを確認する
if (WIFEXITED(status) || WIFSIGNALED(status))
それでも、上記の手順の後、pipe2file プロセスは最終的にゾンビになります。
なにが問題ですか?