bufio.NewScanner.Scan挂起程序

时间:2018-08-22 11:46:41

标签: go

我有以下代码段

package main
import (
  "os/exec"
  "bufio"
  "fmt"
)

func main() {
  cmd := exec.Command("terraform", "init")
  cmd.Dir = ""
  stdout, _ := cmd.StdoutPipe()
  stdoutScanner := bufio.NewScanner(stdout)
  stdoutScanner.Scan()
  fmt.Println("End of main")
}

stdoutScanner.Scan()永远挂起,没有任何输出

我在具有代理的VPC中。

发生这种情况是否有可能的原因?

1 个答案:

答案 0 :(得分:1)

在任何需要的地方添加了评论。

package main

import (
    "bufio"
    "fmt"
    "log"
    "os"
    "os/exec"
)

func main() {
    //args should be specified as you provide them in terminal
    cmd := exec.Command("ls", "-l", "-h")
    //set all required parameters
    cmd.Stdin = os.Stdin
    stdout, _ := cmd.StdoutPipe()
    b := bufio.NewScanner(stdout)
    //start the command
    err := cmd.Start()
    if err != nil {
        log.Println(err)
    }
    //see if you have something, until EOF
    //b.Scan() blocks until you get some input, or EOF
    //It's something like streaming input.
    for b.Scan() {
        //print the input
        fmt.Println(b.Text())
    }
}