Estoy escribiendo un programa en Go que ejecuta un programa similar a un servidor (también Go). Ahora quiero tener la salida estándar del programa secundario en la ventana de mi terminal donde inicié el programa principal. Una forma de hacer esto es con la cmd.Output()función, pero esta imprime la salida estándar solo después de que el proceso haya finalizado. (Eso es un problema porque este programa similar a un servidor se ejecuta durante mucho tiempo y quiero leer la salida del registro)
La variable outes de type io.ReadClosery no sé qué debo hacer con ella para lograr mi tarea, y no puedo encontrar nada útil en la web sobre este tema.
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()
}
Explicación del código: descomente la Printlnfunción para que el código se compile, sé que Println(out io.ReadCloser)no es una función significativa.
(produce la salida &{3 |0 <nil> 0}) Estas dos líneas solo son necesarias para que el código se compile.
io.Copydentro de las rutinas de go
cmd.Wait()o el for{}bucle ... ¿por qué están aquí?