Maison >développement back-end >Golang >Comment récupérer le code de sortie d'une commande exécutée en Go ?

Comment récupérer le code de sortie d'une commande exécutée en Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-16 19:18:13503parcourir

How to Retrieve the Exit Code of an Executed Command in Go?

Obtention du code de sortie dans Go

L'exécution de commandes sur le système d'exploitation à l'aide du package os/exec offre un moyen pratique d'interagir avec des processus. Cependant, obtenir le code de sortie d'une commande exécutée peut être un défi au début.

Pour résoudre ce problème, une approche consiste à surveiller si la fonction cmd.Wait() renvoie nil, ce qui indique un code de sortie de 0. Cependant, accéder au code de sortie spécifique en cas d'erreur peut être plus complexe.

Code de sortie spécifique à la plateforme Récupération

Malheureusement, il n'existe pas de mécanisme multiplateforme pour récupérer le code de sortie en cas d'erreur. La solution de contournement suivante s'adresse spécifiquement aux systèmes Linux :

import (
    "os/exec"
    "log"
    "syscall"
)

func main() {
    cmd := exec.Command("git", "blub")

    if err := cmd.Start(); err != nil {
        log.Fatalf("cmd.Start: %v", err)
    }

    if err := cmd.Wait(); err != nil {
        if exiterr, ok := err.(*exec.ExitError); ok {
            log.Printf("Exit Status: %d", exiterr.ExitCode())
        } else {
            log.Fatalf("cmd.Wait: %v", err)
        }
    }
}

Cette approche utilise le package syscall pour convertir l'erreur en un type *exec.ExitError, permettant l'accès au code de sortie.

Exploration de la documentation

La référence à la documentation de l'API du package os/exec peut fournir des informations supplémentaires dans ce sujet.

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