猿问

流操作系统/exec.Command

我想构建一个类似于 unix tool 的基准测试工具time。我目前拥有的是:


package main


import (

    "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)

}

我的问题是,输出不是流式传输,而是一次全部打印出来,奇怪的是,对于某些程序根本没有。


DIEA
浏览 186回答 2
2回答

郎朗坤

我不确定您在这里尝试做什么,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)}
随时随地看视频慕课网APP

相关分类

Go
我要回答