Maison >développement back-end >Golang >Pourquoi mon Go `exec.Command` échoue-t-il avec plusieurs arguments lorsque la même commande fonctionne dans la console ?

Pourquoi mon Go `exec.Command` échoue-t-il avec plusieurs arguments lorsque la même commande fonctionne dans la console ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-19 19:58:15794parcourir

Why Does My Go `exec.Command` Fail with Multiple Arguments When the Same Command Works in the Console?

Exécuter des commandes avec plusieurs arguments

Lors de l'exécution de commandes dans Go, il est important de faire attention à la façon dont les arguments sont transmis à la commande. Un problème récent rencontré par un utilisateur était que l'exécution de la commande "top" avec certains arguments fonctionnait depuis la console mais échouait lors de l'utilisation du package exec.

Le problème

Le code de l'utilisateur, qui a exécuté avec succès "top -n 10 -l 2", n'a pas réussi à exécuter "top -o cpu -n 10 -l 2". Le message d'erreur fourni par le package exec indiquait que l'argument "-o cpu" n'était pas valide.

La solution

Le problème réside dans la manière dont les arguments sont transmis à la commande. L'interpréteur de ligne de commande sur la console sépare automatiquement les arguments, permettant à la commande de les analyser correctement. Cependant, lors de l'utilisation du package exec, les arguments doivent être explicitement séparés.

Pour ce cas particulier, le code correct serait :

cmd := exec.Command(app, "-o", "cpu", "-n", "10", "-l", "2")

En séparant les arguments, le package exec peut transmettez-les à la commande comme prévu, résolvant ainsi l'erreur.

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