Erreur de débogage « état de sortie 1 » dans exec.Command de Golang
Lors de l'exécution de exec.Command dans Golang, rencontre d'un « état de sortie 1 » " L'erreur peut être frustrante sans informations détaillées. Heureusement, il existe une solution pour découvrir la cause sous-jacente.
Solution :
Utilisez la propriété Stderr de l'objet Command. Cette propriété capture la sortie d’erreur standard générée par la commande. Voici une version modifiée de l'extrait de code :
import ( "bytes" "fmt" "os/exec" ) func main() { 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()) }
Explication :
En attribuant la propriété Stderr à un tampon (stderr), tout message d'erreur produit par le La commande sera capturée et ajoutée au tampon. Lorsque la commande se termine avec un code de sortie différent de zéro, l'erreur et la sortie stderr seront imprimées, fournissant plus de contexte pour le débogage.
Remarque :
Certaines commandes peuvent imprime les erreurs sur stdout au lieu de stderr, ou renvoie un code d'erreur de 0 avec des messages dans stderr. Par conséquent, le comportement de chaque commande doit être pris en compte lors de l'adaptation de cette solution.
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!