Maison >développement back-end >Golang >Comment les arguments variadiques peuvent-ils résoudre les erreurs « Fichier exécutable introuvable » lors de l'exécution de commandes système dynamiques dans Go ?

Comment les arguments variadiques peuvent-ils résoudre les erreurs « Fichier exécutable introuvable » lors de l'exécution de commandes système dynamiques dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-08 13:31:11773parcourir

How Can Variadic Arguments Solve

Utilisation d'arguments variadiques pour l'exécution dynamique de commandes

Dans les situations où le nombre d'arguments pour une commande système est inconnu, l'utilisation d'un fractionnement L'approche -and-assemble utilisant des arguments variadiques offre une solution élégante.

Comme observé dans le code fourni, tenter d'exécuter des commandes complexes avec plusieurs arguments, des erreurs telles que "fichier exécutable introuvable" se produiraient. En effet, le code suppose une commande à un seul mot sans spécifier d'arguments séparément.

Pour surmonter cette limitation, envisagez la solution suivante :

func exeCmd(cmd string, wg *sync.WaitGroup) {
    fmt.Println("command is ", cmd)
    // Split command into head (e.g., 'g++') and parts (remaining arguments)
    parts := strings.Fields(cmd)
    head := parts[0]
    parts = parts[1:]

    out, err := exec.Command(head, parts...).Output()
    if err != nil {
        fmt.Printf("%s", err)
    }
    fmt.Printf("%s", out)
    wg.Done()
}

Ce code mis à jour utilise la fonctionnalité d'argument variadique de Go, désigné par trois points '...'. Voici comment cela fonctionne :

  1. Diviser la commande : La chaîne de commande est divisée en une tête (le premier mot, par exemple 'g') et des parties (les arguments restants) .
  2. Reconstruction de la commande : La tête est ensuite passée comme premier argument à exec.Command(). Les parties restantes sont automatiquement transmises sous forme d'arguments variadiques, créant ainsi la commande complète avec ses arguments d'origine.
  3. Exécution de la commande : La commande construite est exécutée et la sortie ou toute erreur est gérée en conséquence.

En employant des arguments variadiques, cette solution offre une flexibilité dans l'exécution de commandes système avec un nombre variable d'arguments, ce qui la rend particulièrement utile dans les situations où les commandes sont générées dynamiquement.

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