Перенаправить конвейер stdout дочернего процесса в Go

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

Переменная out имеет тип 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 0} ) Эти две строки необходимы только для компиляции кода.

98
задан mbert 13 October 2016 в 08:36
поделиться