Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go bufio.NewScanner.Scan挂起程序_Go - Fatal编程技术网

Go bufio.NewScanner.Scan挂起程序

Go bufio.NewScanner.Scan挂起程序,go,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("

我有以下代码片段

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中


发生这种情况有什么可能的原因吗?

在需要的地方添加了注释

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())
    }
}

试着给出一个简单的例子,在询问诸如测试、命令和其他外部软件包之类的问题时去掉不必要的东西。@nilsocket谢谢你的评论。我重新编辑了这个问题:)@MartinTournoij Scan()函数,不输出任何内容。我尝试制作一个MCV示例
包主导入(“bufio”“fmt”“log”“os”“os/exec”)func main(){cmd:=exec.Command(“ls”、“-l”、“-h”)cmd.Stdin=os.Stdin stdout,:=cmd.StdoutPipe()b:=bufio.NewScanner(stdout)err:=cmd.Start(),如果err!=nil{log.Println(err)}用于b.Scan(){fmt.Println(b.Text())}
如果没有启动命令,则应在设置所有参数后启动命令。上面的示例可以正常工作。另外,
Scanner.Scan()
不应该输出任何内容。它返回一个值(您将丢弃该值),但不打印任何内容。