Я пишу програму в 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{}петлю ... чому вони тут?