Saya sedang menulis program di Go yang menjalankan program seperti server (juga Go). Sekarang saya ingin memiliki stdout program anak di jendela terminal tempat saya memulai program induk. Salah satu cara untuk melakukannya adalah dengan cmd.Output()
fungsi, tetapi ini mencetak stdout hanya setelah proses keluar. (Itu masalah karena program mirip server ini berjalan untuk waktu yang lama dan saya ingin membaca keluaran log)
Variabelnya out
adalah dari type io.ReadCloser
dan saya tidak tahu apa yang harus saya lakukan dengannya untuk menyelesaikan tugas saya, dan saya tidak dapat menemukan apa pun yang berguna di web tentang topik ini.
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()
}
Penjelasan kode: hapus komentar Println
fungsi untuk mendapatkan kode untuk dikompilasi, saya tahu itu Println(out io.ReadCloser)
bukan fungsi yang berarti.
(itu menghasilkan output &{3 |0 <nil> 0}
) Kedua baris ini hanya diperlukan untuk mendapatkan kode yang akan dikompilasi.
io.Copy
dalam rutinitas go
cmd.Wait()
atau for{}
memutar ... mengapa ini ada di sini?