Maison >développement back-end >Golang >Comment récupérer le code de sortie d'une commande système en Go ?

Comment récupérer le code de sortie d'une commande système en Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-19 07:59:32216parcourir

How to Retrieve the Exit Code of a System Command in Go?

Comment obtenir le code de sortie à l'aide de Go

Dans Go, le package os/exec fournit les moyens d'exécuter des commandes système. Cependant, récupérer le code de sortie pose un défi.

Récupérer le code de sortie en cas de succès

Lorsqu'une commande se termine avec le code de sortie 0, la fonction cmd.Wait() renvoie néant.

Récupérer le code de sortie en cas d'échec (pour Linux Uniquement)

Pour les systèmes Linux, l'extrait de code suivant montre comment obtenir le code de sortie lorsque la commande échoue :

import (
    "fmt"
    "log"
    "os/exec"
    "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 {
            fmt.Printf("Exit Status: %d", exiterr.ExitCode())
        } else {
            log.Fatalf("cmd.Wait: %v", err)
        }
    }
}

Aucune approche multiplateforme

Malheureusement, il n'existe pas de méthode multiplateforme pour récupérer le code de sortie en cas d'échec. L'API os/exec ne dispose pas de cette fonctionnalité de par sa conception.

Ressource supplémentaire

Cet article complet développe ce sujet et fournit des détails techniques supplémentaires : http://golang. org/pkg/os/exec/

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