3 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
我相信,如果導(dǎo)入io
和os
與替換此:
//fmt.Println(out)
有了這個(gè):
go io.Copy(os.Stdout, out)
(見文檔的io.Copy
和為os.Stdout
),它會(huì)做你想要什么。(免責(zé)聲明:未經(jīng)測(cè)試。)
順便說(shuō)一句,您可能還想通過使用與標(biāo)準(zhǔn)輸出相同的方法來(lái)捕獲標(biāo)準(zhǔn)錯(cuò)誤,但是要使用cmd.StderrPipe
和os.Stderr
。

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
對(duì)于那些不需要循環(huán)使用但希望命令輸出回顯到終端而又不會(huì)cmd.Wait()阻塞其他語(yǔ)句的用戶:
package main
import (
"fmt"
"io"
"log"
"os"
"os/exec"
)
func checkError(err error) {
if err != nil {
log.Fatalf("Error: %s", err)
}
}
func main() {
// Replace `ls` (and its arguments) with something more interesting
cmd := exec.Command("ls", "-l")
// Create stdout, stderr streams of type io.Reader
stdout, err := cmd.StdoutPipe()
checkError(err)
stderr, err := cmd.StderrPipe()
checkError(err)
// Start command
err = cmd.Start()
checkError(err)
// Don't let main() exit before our command has finished running
defer cmd.Wait() // Doesn't block
// Non-blockingly echo command output to terminal
go io.Copy(os.Stdout, stdout)
go io.Copy(os.Stderr, stderr)
// I love Go's trivial concurrency :-D
fmt.Printf("Do other stuff here! No need to wait.\n\n")
}
- 3 回答
- 0 關(guān)注
- 379 瀏覽
添加回答
舉報(bào)