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 out
ist von type io.ReadCloser
und 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 Println
Funktion 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.Copy
innerhalb von Go-Routinen
cmd.Wait()
oder die for{}
Schleife ... warum sind diese hier?