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.ReadCloserve 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: PrintlnKodu 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.Copygo 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?