我有这个非常简单的代码:
cmd := exec.Command("cat")
cmd.Stdout = os.Stdout
stdin, _ := cmd.StdinPipe()
file, _ := os.Open("file")
io.Copy(stdin, file)
_ = cmd.Run()
有效。但问题是cmd.Run()
永远不会返回。在将文件写入stdin之后,cat
仍在等待更多内容。
我试图做cat <file
所做的事情,在这种情况下cat
会在阅读文件后退出。
我想知道如何实现这一目标?
答案 0 :(得分:3)
这是因为你没有关闭标准输入。在stdin.Close()
之后添加io.Copy
。然后cat
将终止。
另外,我知道这只是一个例子,但绝对没有错误检查。我认为这只是为了说明目的。 : - )