Heim >Backend-Entwicklung >Golang >Warum schlagen Piping-Befehle in „exec.Command()' von Go fehl und wie kann ich das beheben?
F: Piping-Befehle schlagen mit Exit-Status 1 fehl
Beim Versuch, Befehle mit exec.Command() weiterzuleiten, wird der folgende Fehler angezeigt tritt auf:
ps, "cax | grep myapp"
Warum schlägt dieser Befehl fehl, während ps cax funktioniert?
A: Idiomatisches Piping mit exec.Command()
Bestanden Der gesamte Befehl zum Bash kann das Problem lösen, aber es gibt noch eine idiomatischere Möglichkeit Lösung:
Code Beispiel:
package main import ( "fmt" "os/exec" ) func main() { grep := exec.Command("grep", "redis") ps := exec.Command("ps", "cax") // Connect ps's stdout to grep's stdin. pipe, _ := ps.StdoutPipe() defer pipe.Close() grep.Stdin = pipe // Run ps first. ps.Start() // Run and get the output of grep. res, _ := grep.Output() fmt.Println(string(res)) }
Erklärung:
Das obige ist der detaillierte Inhalt vonWarum schlagen Piping-Befehle in „exec.Command()' von Go fehl und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!