min*_*oyo 5
cmd.Start()cmd.Wait()cmd.Run()
Run 启动指定的命令并等待它完成。
Start 启动指定的命令,但不等待它完成。
Wait 等待命令退出。它一定是由 Start 启动的。
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 代码。标准输出可以在 Python 中缓冲。可能需要显式冲洗。
import time
import sys
while True:
print "Hello"
sys.stdout.flush()
time.sleep(1)
- 我不知道 `game.py` 的实现,但标准输出可能在 Python 中缓冲。在 Python 中显式指定 `sys.stdout.flush()` 怎么样? (2认同)