golang monitor cmd输出

时间:2015-01-19 09:36:33

标签: go cmd

我想监控流程状态。任务几乎就是这样。 t.py只是每秒输出一个数字,我想用test.go将这个数字存储到一个文件中。不幸的是,以下代码无法完成这项工作。

t.py:

import time
from sys import stdout

i=0
while 1:
    print("%d" % i) 
    time.sleep(1)
    i += 1

test.go

import (
    "bufio"
    "fmt"
    "os"
    "os/exec"
)

func main() {
    cmd := exec.Command("python", "t.py")
    stdout, err := cmd.StdoutPipe()
    if err != nil {
        fmt.Println(err)
    }
    scanner := bufio.NewScanner(stdout)
    err = cmd.Start()
    if err != nil {
        fmt.Println(err)
    }
    for scanner.Scan() {
        line := scanner.Text()
        f, _ := os.Create("./temp.txt")
        fmt.Fprintf(f, "then %s\n", line)
        f.Close()
    }
}

1 个答案:

答案 0 :(得分:2)

输出被缓冲。在stdout.flush()

之后添加print
import time
from sys import stdout

i=0
while 1:
    print("%d" % i) 
    stdout.flush()
    time.sleep(1)
    i += 1