Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mendapatkan Kod Keluar dari Perintah yang Dilaksanakan dalam Go?

Bagaimana untuk Mendapatkan Kod Keluar dari Perintah yang Dilaksanakan dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-12-16 19:18:13502semak imbas

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

Mendapatkan Kod Keluar dalam Go

Melaksanakan arahan pada sistem pengendalian menggunakan pakej os/exec menyediakan cara yang mudah untuk berinteraksi dengan luaran proses. Walau bagaimanapun, mendapatkan kod keluar perintah yang dilaksanakan boleh menjadi satu cabaran pada mulanya.

Untuk menyelesaikan isu ini, satu pendekatan adalah untuk memantau jika fungsi cmd.Wait() mengembalikan sifar, yang menunjukkan kod keluar 0. Walau bagaimanapun, mengakses kod keluar tertentu sekiranya berlaku ralat boleh menjadi lebih kompleks.

Kod Keluar Khusus Platform Retrieval

Malangnya, tiada mekanisme merentas platform untuk mendapatkan semula kod keluar untuk kes ralat. Penyelesaian berikut secara khusus menangani sistem 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)
        }
    }
}

Pendekatan ini menggunakan pakej syscall untuk menghantar ralat kepada jenis *exec.ExitError, membenarkan akses kepada kod keluar.

Penerokaan Dokumentasi

Merujuk dokumentasi API bagi pakej os/exec boleh memberikan maklumat lanjut tentang topik ini.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kod Keluar dari Perintah yang Dilaksanakan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn