Problem: Verzögerte Ausgabeanzeige
Derzeit verarbeitet Ihr Code einen Befehl und zeigt seine Ausgabe erst an, wenn die Ausführung abgeschlossen ist. Sie suchen nach einer Lösung, um die Ausgabe live zu streamen, anstatt auf den Abschluss des Prozesses zu warten.
Lösung: Befehlsausgabe-Streaming
Verwenden Sie den folgenden Ansatz zum Streamen von Befehlen Ausgabe:
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
Das obige ist der detaillierte Inhalt vonWie streame ich die Befehlsausgabe in Echtzeit, anstatt auf den Abschluss der Ausführung zu warten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!