我在Go中有一个应用程序重新路由二进制文件的STDIN和STDOUT,然后运行它们.简而言之,我正在做:
– 使用二进制路径创建命令对象(让我们调用对象命令A)
– 使用二进制路径创建命令对象(将其命名为命令B)
– 将命令B的stdout设置为命令A的stdin
– 启动命令A.
– 启动命令B.
我注意到,当命令A运行时,只要命令B的进程退出,它就会成为进程表中的僵尸进程.
这是一个例子:
commandA := exec.Command("samplebin") commandB := exec.Command("sample2bin") cmdAStdin := commandA.StdinPipe() commandB.Stdout = cmdAStdin commandA.Start() commandB.Start()
如果在命令A仍在运行时它退出,为什么commandB会成为僵尸?我在Ubuntu 14上运行Go 1.5.