使用
cmd.Start()和
cmd.Wait()代替
cmd.Run()。
https://golang.org/pkg/os/exec/#Cmd.Run
运行将启动指定的命令并等待其完成。
启动将启动指定的命令,但不等待其完成。
等待等待命令退出。它必须已经由“开始”启动。
如果要同时捕获stdout / stderr,请使用
cmd.StdoutPipe()/
cmd.StderrPipe()并通过
bufio.NewScanner()
package mainimport ( "bufio" "fmt" "io" "os/exec")func main() { cmd := exec.Command("python", "game.py") stdout, err := cmd.StdoutPipe() if err != nil { panic(err) } stderr, err := cmd.StderrPipe() if err != nil { panic(err) } err = cmd.Start() if err != nil { panic(err) } go copyOutput(stdout) go copyOutput(stderr) cmd.Wait()}func copyOutput(r io.Reader) { scanner := bufio.NewScanner(r) for scanner.Scan() { fmt.Println(scanner.Text()) }}以下是用于再现实时输出的示例python代码。可以在Python中缓冲标准输出。可能需要显式冲洗。
import timeimport syswhile True: print "Hello" sys.stdout.flush() time.sleep(1)



