我正在使用处理从管道读取和写入文件的分叉进程(“pipe2file”)重定向程序(程序“exec'ed”)的输出。
如果程序“exec'ed”被杀死,并且它的等待状态被恢复,那么“pipe2file”进程也需要做同样的事情。
所以,我正在做的是这样的:
- 关闭它使用的管道末端
- 通过发送终止信号
kill(pipe2file, SIGKILL)
- 像这样使用 waitpid 来获取其退出状态
waitpid(pipe2file, &status, 1)
- 检查状态
if (WIFEXITED(status) || WIFSIGNALED(status))
尽管如此,在上述步骤之后,pipe2file 进程最终还是一个僵尸。
怎么了?