ฉันกำลังเขียนโปรแกรมใน Go ซึ่งรันเซิร์ฟเวอร์เช่นโปรแกรม (เช่น Go) ตอนนี้ฉันต้องการให้ stdout ของโปรแกรมลูกในหน้าต่างเทอร์มินัลของฉันที่ฉันเริ่มโปรแกรมหลัก วิธีหนึ่งในการทำเช่นนี้คือการใช้cmd.Output()
ฟังก์ชัน แต่จะพิมพ์ stdout หลังจากออกจากกระบวนการแล้วเท่านั้น (นั่นเป็นปัญหาเนื่องจากโปรแกรมที่เหมือนเซิร์ฟเวอร์นี้ทำงานเป็นเวลานานและฉันต้องการอ่านเอาต์พุตบันทึก)
ตัวแปรout
เป็นของtype io.ReadCloser
และฉันไม่รู้ว่าควรทำอย่างไรกับมันเพื่อให้บรรลุภารกิจของฉันและฉันไม่พบสิ่งที่เป็นประโยชน์บนเว็บในหัวข้อนี้
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()
}
คำอธิบายเกี่ยวกับรหัส: ยกเลิกการใส่เครื่องหมายPrintln
ฟังก์ชันเพื่อรับโค้ดเพื่อคอมไพล์ฉันรู้ว่านั่นPrintln(out io.ReadCloser)
ไม่ใช่ฟังก์ชันที่มีความหมาย
(สร้างผลลัพธ์&{3 |0 <nil> 0}
) สองบรรทัดนี้จำเป็นเพื่อรับโค้ดเพื่อคอมไพล์