golang监控cmd输出
golang monitor cmd output
我想监控进程状态。任务差不多就是这样。 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()
}
}
输出已缓冲。在 print
之后添加 stdout.flush()
import time
from sys import stdout
i=0
while 1:
print("%d" % i)
stdout.flush()
time.sleep(1)
i += 1
我想监控进程状态。任务差不多就是这样。 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()
}
}
输出已缓冲。在 print
stdout.flush()
import time
from sys import stdout
i=0
while 1:
print("%d" % i)
stdout.flush()
time.sleep(1)
i += 1