Erreur de débogage « état de sortie 1 » dans l'exécutable de Go
Lorsque vous rencontrez l'erreur énigmatique « état de sortie 1 » lors de l'exécution de commandes externes en utilisant exec.Command de Golang, il peut être une tâche ardue d'identifier la cause exacte. Ce bref guide fournira des informations sur la manière de résoudre efficacement l'erreur.
Utilisation de Stderr pour les messages d'erreur améliorés
Par défaut, exec.Command capture uniquement la sortie standard (stdout) lorsque exécuter une commande. Pour récupérer des messages d'erreur plus détaillés, vous pouvez utiliser la propriété Stderr de la structure exec.Command. Voici comment :
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\") var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr
Maintenant, lorsque la commande est exécutée et qu'une erreur se produit, le message d'erreur sera écrit dans le tampon stderr au lieu d'un "état de sortie 1" générique.
Exemple
Considérez le code suivant extrait :
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\") var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run() if err != nil { fmt.Println(fmt.Sprint(err) + ": " + stderr.String()) return } fmt.Println("Result: " + out.String())
Lors de l'exécution, le code affichera le message d'erreur détaillé suivant :
exit status 1: find: -exec: no terminating ";" or "+"
Considérations supplémentaires
Cela convient de le noter que certaines commandes peuvent ne pas respecter la convention d'écriture d'erreurs dans stderr. Certaines commandes peuvent imprimer des erreurs sur stdout, tandis que d'autres peuvent imprimer des erreurs sur stderr tout en renvoyant un état de sortie réussi (0). Par conséquent, il peut être nécessaire d'ajuster le code pour répondre aux commandes spécifiques que vous exécutez.
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!