Я пишу програму в Go, яка виконує такий сервер, як програма (також Go). Тепер я хочу мати відтінок дочірньої програми у своєму вікні терміналу, де я запустив батьківську програму. Один із способів зробити це - за допомогою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}
) Ці два рядки просто необхідні для отримання коду для компіляції.
io.Copy
в підпрограми go
cmd.Wait()
чи for{}
петлю ... чому вони тут?