我正在使用 exec 创建一个新命令,获取标准输入io.WriteCloser并将其写入如下:cmd := exec.Command(flag.Arg(0), flag.Args()[1:]...)cmdInWriter, err := cmd.StdinPipe()err = cmd.Start()go func() { for { var c string _, err = fmt.Scanln(&c) written, err := io.WriteString(cmdInWriter, c) fmt.Println(written) // prints 4, if c is "help" }}()但是,这似乎并没有真正写入程序。flag.Arg(0)= 爪哇flag.Args()[1:]...= 传递给 java 程序的参数数组我用我快速制作的另一个程序对其进行了测试(之前的列表不适用于那里)并且字符串再次没有被写入。我究竟做错了什么?
1 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
您缺少换行符。当您使用 Scanln 读取字符串时,生成的字符串末尾没有换行符:
written, err := fmt.Fprintln(cmdInWriter, c)
- 1 回答
- 0 关注
- 247 浏览
添加回答
举报
0/150
提交
取消
