Wie streame ich die Live-Ausgabe ausgeführter Befehle in Go?
Live-Ausgabe ausgeführter Befehle
Dieser Codeausschnitt zeigt ein Problem, das häufig beim Ausführen von Befehlen und beim Abrufen ihrer Ausgabe in Go auftritt: Die Ausgabe wird Erst verfügbar, nachdem die Ausführung des Befehls abgeschlossen ist. Um dieses Problem zu beheben, wird eine modifizierte Lösung bereitgestellt, die ein Live-Streaming der Befehlsausgabe ermöglicht.
cmdParams := [][]string{ {filepath.Join(dir, path), "npm", "install"}, {filepath.Join(pdir, n.path), "gulp"}, } for _, cp := range cmdParams { log.Printf("Starting %s in folder %s...", cp[1:], cp[0]) cmd := exec.Command(cp[1], cp[2:]...) cmd.Dir = cp[0] stdout, err := cmd.StdoutPipe() if err != nil { log.Printf("%s cmd.StdoutPipe() error: %v\n", cp[1:], err) return } // Start command: if err = cmd.Start(); err != nil { log.Printf("%s start error: %v\n", cp[1:], err) return } // Stream command output: scanner := bufio.NewScanner(stdout) scanner.Split(bufio.ScanRunes) for scanner.Scan() { fmt.Print(scanner.Text()) } if scanner.Err() != nil { log.Printf("Reading %s stdout error: %v\n", cp[1:], err) return } // Get execution success or failure: if err = cmd.Wait(); err != nil { log.Printf("Error running %s: %v\n", cp[1:], err) return } log.Printf("Finished %s", cp[1:]) }
Erklärung:
- cmd.StdoutPipe() Erstellt eine Pipe, die es uns ermöglicht, die Standardausgabe des Befehls in Echtzeit zu lesen.
- bufio.NewScanner(stdout) Erstellt einen Scanner, der Runen (Zeichen) aus der Ausgabepipe liest.
- scanner.Scan() liest und druckt jedes Zeichen, sobald es verfügbar wird.
- Die Schleife liest und druckt weiterhin Zeichen bis Der Befehl wird beendet oder es tritt ein Fehler auf.
- Nachdem der Befehl beendet ist, wird die verbleibende Ausgabe gedruckt und der Exit-Status des Befehls lautet abgerufen.
Zusätzliche Hinweise:
- Diese Lösung streamt nur die Standardausgabe. Standardfehler können auch mit Command.StderrPipe() gestreamt werden.
- Einige Befehle schreiben möglicherweise nicht alles in ihre Standardausgabe oder ihren Fehler. In solchen Fällen wird die Ausgabe möglicherweise nicht korrekt gestreamt.
Das obige ist der detaillierte Inhalt vonWie streame ich die Live-Ausgabe ausgeführter Befehle in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich?

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren?

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache?

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?

Wie schreibe ich Dateien in Go Language bequem?

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?
