Tôi đang viết một chương trình trong Go thực thi một chương trình giống như máy chủ (cũng là Go). Bây giờ tôi muốn có stdout của chương trình con trong cửa sổ đầu cuối của mình nơi tôi bắt đầu chương trình mẹ. Một cách để thực hiện điều này là với cmd.Output()
hàm, nhưng hàm này chỉ in ra stdout sau khi quá trình đã thoát. (Đó là một vấn đề vì chương trình giống như máy chủ này chạy trong một thời gian dài và tôi muốn đọc đầu ra nhật ký)
Biến out
là của type io.ReadCloser
và tôi không biết mình nên làm gì với nó để đạt được nhiệm vụ của mình và tôi không thể tìm thấy bất kỳ điều gì hữu ích trên web về chủ đề này.
func main() {
cmd := exec.Command("/path/to/my/child/program")
out, err := cmd.StdoutPipe()
if err != nil {
fmt.Println(err)
}
err = cmd.Start()
if err != nil {
fmt.Println(err)
}
//fmt.Println(out)
cmd.Wait()
}
Giải thích cho mã: bỏ ghi chú Println
hàm để lấy mã để biên dịch, tôi biết đó Println(out io.ReadCloser)
không phải là một hàm có ý nghĩa.
(nó tạo ra đầu ra &{3 |0 <nil> 0}
) Hai dòng này chỉ cần thiết để lấy mã để biên dịch.
io.Copy
trong thói quen đi
cmd.Wait()
hoặc for{}
vòng lặp ... tại sao những thứ này lại ở đây?