我有这个非常简单的代码:
cmd := exec.Command("cat")
cmd.Stdout = os.Stdout
stdin, _ := cmd.StdinPipe()
file, _ := os.Open("file")
io.Copy(stdin, file)
_ = cmd.Run()
它有效。但问题是cmd.Run()
永远不会回来。看来将文件写入标准输入后,cat
仍在等待更多内容。
我正在尝试做什么 cat <file
确实如此,在这种情况下cat
读取文件后将退出。
我想知道如何在 go 中实现这一点?
最佳答案
这是因为你没有关闭标准输入。在 io.Copy
之后添加 stdin.Close()
。 cat
随后将终止。
另外,我知道这只是一个示例,但绝对没有错误检查。我认为这只是为了说明目的。 :-)
关于go - 执行命令时如何使用文件作为标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45302931/