Maison >développement back-end >Golang >Comment exécuter correctement les commandes redirigées dans Go à l'aide de « exec.Command() » ?

Comment exécuter correctement les commandes redirigées dans Go à l'aide de « exec.Command() » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-27 19:15:12134parcourir

How to Correctly Execute Piped Commands in Go using `exec.Command()`?

Exécuter des commandes avec des tuyaux en Go à l'aide de exec.Command()

Lors de la tentative d'exécution d'une commande impliquant un tuyau, telle que "ps cax | grep myapp", en utilisant exec.Command("ps", "cax | grep myapp").Output(), vous pouvez rencontrer un état de sortie 1 erreur.

Pour gérer efficacement de telles commandes, une solution plus idiomatique consiste à utiliser plusieurs instances exec.Command et à connecter leurs flux d'entrée et de sortie.

Voici un aperçu du fonctionnement de l'approche idiomatique :

  1. Créer les commandes : Initialisez des instances exec.Command distinctes pour chaque commande dans le pipeline, tel que "ps" et "grep" dans ce cas.
  2. Connectez les flux : utilisez les méthodes StdoutPipe et Stdin pour connecter la sortie standard de la commande "ps" au entrée standard de la commande "grep".
  3. Démarrer la première commande : Démarrez la première commande du pipeline, généralement celle responsable de produisant une sortie, qui est "ps" dans notre exemple.
  4. Capturez la sortie : attendez la fin de la deuxième commande et récupérez sa sortie à l'aide de la méthode Output.

En employant cette approche, vous pouvez exécuter efficacement des commandes qui nécessitent un chaînage via des tuyaux, garantissant ainsi une gestion appropriée des flux d'entrée et de sortie.

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