我需要将用户提供的输入复制到子进程。如何复制输入给子进程stdIn的输入?

时间:2019-05-05 03:13:32

标签: go

我需要在执行过程中复制用户为子进程提供的所有输入。我试图扫描cmd.Stdin以获取输入的副本,但无法获取它。我在这里想念东西吗?


func main(){
  cmd:= exec.Command("python", "-i")
  cmd.Stdin = os.Stdin
  cmd.Stdout = os.Stdout
  cmd.Stderr = os.Stderr

  buff := bufio.NewScanner(cmd.Stdin)

  go func(){
    for buff.Scan(){
      fmt.Println(buff.Text())
    }
  }()

  _ = cmd.Run()  
}

1 个答案:

答案 0 :(得分:0)

我认为您实际上需要捕获输入,并将其传递给子流程...

func main(){
  cmd := exec.Command("python", "-i")
  stdin, err := cmd.StdinPipe()
  if err != nil {
      panic(err)
  }
  cmd.Stdout = os.Stdout
  cmd.Stderr = os.Stderr

  buff := bufio.NewScanner(os.Stdin)

  go func(){
    for buff.Scan(){
      input := buff.Text()
      fmt.Println(input)
      io.WriteString(stdin, input)
    }
  }()

  cmd.Start()  
  cmd.Wait()
}