Maison >développement back-end >Golang >Pourquoi mon code Go renvoie-t-il « état de sortie 1 » lors de l'utilisation de exec.Command ?

Pourquoi mon code Go renvoie-t-il « état de sortie 1 » lors de l'utilisation de exec.Command ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-24 04:24:15898parcourir

Why Does My Go Code Return

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn