cmd.Start()cmd.Wait()cmd.Run()
运行启动指定的命令并等待它完成。
开始启动指定的命令,但不等待它完成。
等待等待命令退出。它一定是开始的。
cmd.StdoutPipe()cmd.StderrPipe()bufio.NewScanner()
package main
import (
"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代码。STDOUT可以在Python中缓冲。可能需要显式冲洗。
import time
import sys
while True:
print "Hello"
sys.stdout.flush()
time.sleep(1)