相关疑难解决方法(0)

如何在实时输出时将命令的stdout和stderr重定向到控制台和日志文件?

下面的代码完全符合我的要求,除了它只打印到控制台.

cmd := exec.Command("php", "randomcommand.php")

cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr

if err := cmd.Run(); err != nil {
    log.Fatal(err)
}
Run Code Online (Sandbox Code Playgroud)

randomcommand.php:

// randomcommand.php simply alternates output between stdout and stderr 20 times

$stdout = fopen('php://stdout', 'w+');
$stderr = fopen('php://stderr', 'w+');
for ($i = 1;$i <= 20; $i++) {
    fwrite($stdout, "stdout $i\n");
    fwrite($stderr, "stderr $i\n");
}
Run Code Online (Sandbox Code Playgroud)

输出:

stdout 1
stderr 1
stdout 2
stderr 2
stdout 3
stderr 3
stdout 4
stderr 4
stdout 5
stderr 5
stdout 6
stderr …
Run Code Online (Sandbox Code Playgroud)

io synchronization go

4
推荐指数
1
解决办法
4306
查看次数

标签 统计

go ×1

io ×1

synchronization ×1