杀死父母后将Stdin传递给子进程

时间:2015-09-16 05:37:48

标签: go process stdin

我在Go中有以下代码:

cmd := exec.Command(...)
cmd.Stdout = os.Stdout
cmd.Stdin = os.Stdin
cmd.Stderr = os.Stderr
cmd.Run()

将另一个Go程序作为子进程生成,并将其Stdin,Stdout和Stderr设置为父进程。在孩子产生之后,我想通过父进程中的os.Exit()或子进程中的syscall.Kill(os.Getppid(), syscall.SIGTERM)来终止父进程。我杀死父母后出现问题。它似乎关闭了Stdin,因此孩子无法从产生父母的终端接收输入。

我可以在杀死父母之前收到关于孩子的输入,所以它肯定是杀死关闭Stdin的父母的行为。有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

根据我的经验,我不知道如何解决Stdin的问题。只有StdoutStderr才有效。

另一种方法是释放父进程使用的资源(即尽可能使其保持轻量级)并让它等待子进程的执行。