Я пишу программу в 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}
). Эти две строки необходимы для компиляции кода.