Go'da sunucu benzeri bir program (ayrıca Go) çalıştıran bir program yazıyorum. Şimdi alt programın stdout'unu ana programı başlattığım terminal penceremde olmasını istiyorum. Bunu yapmanın bir yolu cmd.Output()
işlevdir, ancak bu stdout'u yalnızca işlemden çıktıktan sonra yazdırır. (Bu bir sorun çünkü bu sunucu benzeri program uzun süre çalışıyor ve günlük çıktısını okumak istiyorum)
Değişken out
, 'dir type io.ReadCloser
ve görevimi yerine getirmek için onunla ne yapmam gerektiğini bilmiyorum ve bu konuda web'de yararlı hiçbir şey bulamıyorum.
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()
}
Koda açıklama: Println
Kodu derlemek için işlevin açıklamasını kaldırın, Println(out io.ReadCloser)
bunun anlamlı bir işlev olmadığını biliyorum .
(çıktıyı üretir &{3 |0 <nil> 0}
) Bu iki satır sadece derlenecek kodu almak için gereklidir.
io.Copy
go rutinleri içinde aramanız gerektiğini sanmıyorum
cmd.Wait()
veya for{}
döngüye ihtiyacın olduğunu sanmıyorum ... bunlar neden burada?