Sto scrivendo un programma in Go che esegue un programma simile a un server (anche Go). Ora voglio avere lo stdout del programma figlio nella mia finestra del terminale dove ho avviato il programma genitore. Un modo per farlo è con la cmd.Output()
funzione, ma questa stampa lo stdout solo dopo che il processo è terminato. (Questo è un problema perché questo programma simile a un server viene eseguito per molto tempo e voglio leggere l'output del registro)
La variabile out
è di type io.ReadCloser
e non so cosa dovrei farne per svolgere il mio compito, e non riesco a trovare nulla di utile sul web su questo argomento.
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()
}
Spiegazione del codice: rimuovere il commento dalla Println
funzione per compilare il codice, so che Println(out io.ReadCloser)
non è una funzione significativa.
(produce l'output &{3 |0 <nil> 0}
) Queste due righe sono necessarie solo per ottenere il codice da compilare.
io.Copy
all'interno delle routine go
cmd.Wait()
o fare il for{}
loop ... perché sono qui?