J'écris un programme en Go qui exécute un programme de type serveur (également en Go). Maintenant, je veux avoir le stdout du programme enfant dans ma fenêtre de terminal où j'ai lancé le programme parent. Une façon de le faire est d'utiliser la fonction cmd.Output()
mais celle-ci n'imprime le stdout qu'après la sortie du processus. (C'est un problème car ce programme de type serveur fonctionne pendant longtemps et je veux lire le journal de sortie).
La variable out
est de type io.ReadCloser
et je ne sais pas ce que je dois en faire pour réaliser ma tâche, et je ne trouve rien d'utile sur le web à ce sujet.
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()
}
Explication du code : décommentez le champ Println
pour que le code soit compilé, je sais que Println(out io.ReadCloser)
n'est pas une fonction significative.
(il produit la sortie &{3 |0 <nil> 0}
) Ces deux lignes sont juste nécessaires pour que le code se compile.