我有这样的代码:func main() { s := "foobar" cmd := exec.Command("wc", "-l") stdin, err := cmd.StdinPipe() if err != nil { log.Panic(err) } stdout, err := cmd.StdoutPipe() if err != nil { log.Panic(err) } err = cmd.Start() if err != nil { log.Panic(err) } io.Copy(stdin, bytes.NewBufferString(s)) stdin.Close() io.Copy(os.Stdout, stdout) err = cmd.Wait() if err != nil { log.Panic(err) }}它的输出是:0但是当我会做简单的修改时:func main() { runWcFromStdinWorks("aaa\n") runWcFromStdinWorks("bbb\n")}func runWcFromStdinWorks(s string) { cmd := exec.Command("wc", "-l") stdin, err := cmd.StdinPipe() if err != nil { log.Panic(err) } stdout, err := cmd.StdoutPipe() if err != nil { log.Panic(err) } err = cmd.Start() if err != nil { log.Panic(err) } io.Copy(stdin, bytes.NewBufferString(s)) stdin.Close() io.Copy(os.Stdout, stdout) err = cmd.Wait() if err != nil { log.Panic(err) }}它有效,但为什么呢?它只是调用方法为什么第一个版本不起作用?
- 1 回答
- 0 关注
- 151 浏览
添加回答
举报
0/150
提交
取消