Я пишу программу на Go, которая выполняет программу, похожую на сервер (также Go). Теперь я хочу иметь стандартный вывод дочерней программы в моем окне терминала, где я запустил родительскую программу. Один из способов сделать это - использовать функцию cmd.Output()
, но она печатает стандартный вывод только после завершения процесса. (Это проблема, потому что эта серверная программа работает в течение длительного времени, и я хочу прочитать вывод журнала)
Переменная 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}
) Эти две строки просто необходимы для компиляции кода.