我有一个使用Go编写的应用程序,它重新定向二进制文件的STDIN和STDOUT,然后运行它们。简而言之,我正在执行以下操作:
- 使用二进制路径创建命令对象(我们将对象称为命令A)
- 使用二进制路径创建命令对象(我们将其称为命令B)
- 将命令B的标准输出设置为命令A的标准输入
- 启动命令A
- 启动命令B
我注意到,每当命令B的进程在命令A正在运行时退出时,它会成为进程表中的僵尸进程。
以下是一个示例:
commandA := exec.Command("samplebin")
commandB := exec.Command("sample2bin")
cmdAStdin := commandA.StdinPipe()
commandB.Stdout = cmdAStdin
commandA.Start()
commandB.Start()
如果commandA仍在运行时commandB退出,为什么commandB会成为僵尸进程?我在Ubuntu 14上运行Go 1.5。
signal.Ignore(syscall.SIGCHLD)
- AnonymousX