执行命令时,保证实时得到执行的日志,可以以通过下面的代码 实现。亲测试可以使用
package utils
import (
"fmt"
"log"
"os/exec"
)
func RunCommand(name string, arg ...string) error {
cmd := exec.Command(name, arg...)
log.Println(cmd.String())
// 命令的错误输出和标准输出都连接到同一个管道
stdout, err := cmd.StdoutPipe()
cmd.Stderr = cmd.Stdout
if err != nil {
return err
}
if err = cmd.Start(); err != nil {
return err
}
// 从管道中实时获取输出并打印到终端
for {
tmp := make([]byte, 1024)
_, err := stdout.Read(tmp)
fmt.Print(string(tmp))
if err != nil {
break
}
}
if err = cmd.Wait(); err != nil {
return err
}
return nil
}
该代码片段展示了如何在执行命令时实时获取并打印输出日志。通过创建命令对象,设置其标准输出和错误输出为同一管道,并使用循环读取管道内容来实现实时显示。这在需要监控命令执行过程时非常有用。
1837






