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 out
es de type io.ReadCloser
y 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 Println
funció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.Copy
dentro de las rutinas de go
cmd.Wait()
o el for{}
bucle ... ¿por qué están aquí?