Ich schreibe ein Programm in Go, das ein serverähnliches Programm ausführt (auch Go). Jetzt möchte ich die Standardausgabe des untergeordneten Programms in meinem Terminalfenster haben, in dem ich das übergeordnete Programm gestartet habe. Eine Möglichkeit, dies zu tun, ist die cmd.Output()Funktion, die jedoch erst nach dem Beenden des Prozesses den Standard ausgibt. (Das ist ein Problem, da dieses serverähnliche Programm lange läuft und ich die Protokollausgabe lesen möchte.)
Die Variable outist von type io.ReadCloserund ich weiß nicht, was ich damit machen soll, um meine Aufgabe zu erfüllen, und ich kann im Web zu diesem Thema nichts Hilfreiches finden.
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()
}
Erklärung zum Code: Kommentieren Sie die PrintlnFunktion aus, um den Code zum Kompilieren zu bringen. Ich weiß, dass dies Println(out io.ReadCloser)keine sinnvolle Funktion ist.
(Es erzeugt die Ausgabe. &{3 |0 <nil> 0}) Diese beiden Zeilen sind nur erforderlich, damit der Code kompiliert werden kann.
io.Copyinnerhalb von Go-Routinen
cmd.Wait()oder die for{}Schleife ... warum sind diese hier?