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()
不应该输出任何内容。它返回一个值(您将丢弃该值),但不打印任何内容。