为了账号安全,请及时绑定邮箱和手机立即绑定

写入 exec.Cmd.StdinPipe() 没有任何作用

写入 exec.Cmd.StdinPipe() 没有任何作用

Go
浮云间 2022-06-21 10:07:33
我正在使用 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)


查看完整回答
反对 回复 2022-06-21
  • 1 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号