Heim >Backend-Entwicklung >Golang >Wie rufe ich den Exit-Code von „os/exec' in Go ab?

Wie rufe ich den Exit-Code von „os/exec' in Go ab?

Barbara Streisand
Barbara StreisandOriginal
2024-12-23 10:37:58454Durchsuche

How to Retrieve the Exit Code from `os/exec` in Go?

So erhalten Sie den Exit-Code in Go

Wenn Sie das os/exec-Paket zum Ausführen eines Befehls verwenden, kann es vorkommen, dass Sie häufig auf die Sorge stoßen, den Exit-Code zu erhalten. Während die Dokumentation die Process.Success()-Methode bereitstellt, um anzuzeigen, ob der Prozess ohne Fehler beendet wurde, bietet sie keine explizite Möglichkeit, den tatsächlichen Exit-Code abzurufen.

Eine Problemumgehung zum Abrufen des Exit-Codes für Linux: basierten Systemen besteht darin, das Syscall-Paket zu nutzen. Hier ist ein verbesserter Codeausschnitt:

package main

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

func main() {
    cmd := exec.Command("somecommand", "parameter")
    if err := cmd.Run(); err != nil {
        if exiterr, ok := err.(*exec.ExitError); ok {
            // exiterr.Sys() is a syscall.WaitStatus.
            log.Printf("Exit Status: %d", exiterr.Sys().(syscall.WaitStatus).ExitStatus())
        } else {
            log.Fatalf("cmd.Run: %v", err)
        }
    }
}

Dieser Ansatz verwendet den WaitStatus-Typ aus dem Syscall-Paket, das eine ExitStatus()-Methode enthält, um den Exit-Code für Prozesse abzurufen, die unter Linux und anderen UNIX-ähnlichen Betriebssystemen ausgeführt werden .

Für Windows-Systeme funktioniert diese Methode nicht, da sie nicht das gleiche Konzept von Exit-Codes bietet. Stattdessen können Sie sich für alternative Ansätze entscheiden, wie z. B. die Verwendung der /c-Option von cmd.exe, um einen Befehl auszuführen und die Ausgabe auf Fehlercodes zu analysieren.

Durch die Anpassung dieser Techniken basierend auf Ihrem Betriebssystem können Sie die effektiv abrufen Exit-Code externer Befehle, die über das os/exec-Paket in Go ausgeführt werden.

Das obige ist der detaillierte Inhalt vonWie rufe ich den Exit-Code von „os/exec' in Go ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn