我用exec.command包创建一个阻塞进程,现在想要输出信息,该用什么包ioutil包要error才能输出,但是我是阻塞的,这个不行

共 2 个回复


haha03942008

自问自答吧,用”bufio”包进行获取
但是如果循环获取会阻塞住,不知道为什么

reader := bufio.NewReader(stderr)
    buf := make([]byte, 1024)
    //进行输入流读取
    time.Sleep(1 * time.Second)
    _, err = reader.Read(buf)
    if err != nil {
        io.WriteString(v, "read stream error")
        log.Fatal("strout pipe error")
    }

因为我的命令输出在一秒内肯定能响应完全,就sleep一秒,然后获取

# 0

CodyGuo

cmd := exec.Command("ping", "-t", "www.baidu.com")
cmd.Stderr = os.Stderr
cmd.Run()
# 1