Maison >développement back-end >Golang >Pourquoi les commandes de tuyauterie dans « exec.Command() » de Go échouent-elles et comment puis-je y remédier ?
Q : Les commandes canalisées échouent avec l'état de sortie 1
Lorsque vous tentez de transmettre des commandes à l'aide de exec.Command(), l'erreur suivante se produit :
ps, "cax | grep myapp"
Pourquoi cette commande échoue-t-elle alors que ps cax fonctionne ?
A : Piping idiomatique avec exec.Command()
Passer la commande entière à bash peut résoudre le problème, mais il existe une méthode plus idiomatique solution :
Code Exemple :
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)) }
Explication :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!