为了账号安全,请及时绑定邮箱和手机立即绑定

流操作系统/exec.Command

流操作系统/exec.Command

Go
DIEA 2021-10-18 14:49:15
我想构建一个类似于 unix tool 的基准测试工具time。我目前拥有的是:package mainimport (    "fmt"    "os"    "os/exec"    "time")func main() {    command := os.Args[1]    args := os.Args[2:]    cmd := exec.Command(command, args...)    start_time := time.Now().UnixNano()    stdout, err := cmd.Output()    if err != nil {        println(err.Error())        return    }    print(string(stdout))    total_time := int64(time.Nanosecond) * (time.Now().UnixNano() - start_time) / int64(time.Millisecond)    fmt.Println(total_time)}我的问题是,输出不是流式传输,而是一次全部打印出来,奇怪的是,对于某些程序根本没有。
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

我不确定您在这里尝试做什么,print(string(stdout))但这是不必要的,您面临的问题可能是那里滥用的副作用。


func main() {

    command := os.Args[1]

    args := os.Args[2:]

    cmd := exec.Command(command, args...)

    cmd.Stdout = os.Stdout

    cmd.Stderr = os.Stderr

    start_time := time.Now().UnixNano()


    if err != nil {

        fmt.Println(err.Error())

        return

    }


    total_time := int64(time.Nanosecond) * (time.Now().UnixNano() - start_time) / int64(time.Millisecond)

    fmt.Println(total_time)

}


查看完整回答
反对 回复 2021-10-18
  • 2 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信