Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mendapatkan Kod Keluar daripada `os/exec` dalam Go?

Bagaimana untuk Mendapatkan Kod Keluar daripada `os/exec` dalam Go?

Barbara Streisand
Lepaskan: 2024-12-23 10:37:58
asal
450 orang telah melayarinya

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

Cara Mendapatkan Kod Keluar dalam Go

Apabila menggunakan pakej os/exec untuk melaksanakan arahan, seseorang mungkin menghadapi kebimbangan umum untuk mendapatkan kod keluar. Walaupun dokumentasi menyediakan kaedah Process.Success() untuk menunjukkan sama ada proses itu keluar tanpa ralat, ia tidak menyediakan cara yang jelas untuk mendapatkan semula kod keluar sebenar.

Satu penyelesaian untuk memperoleh kod keluar untuk Linux- sistem berasaskan adalah untuk memanfaatkan pakej syscall. Berikut ialah coretan kod yang dipertingkatkan:

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)
        }
    }
}
Salin selepas log masuk

Pendekatan ini menggunakan jenis WaitStatus daripada pakej syscall, yang mengandungi kaedah ExitStatus() untuk mendapatkan semula kod keluar untuk proses yang dijalankan pada Linux dan sistem pengendalian seperti UNIX yang lain .

Untuk sistem Windows, kaedah ini tidak akan berfungsi kerana ia tidak memberikan konsep kod keluar yang sama. Sebaliknya, anda boleh memilih pendekatan alternatif seperti menggunakan pilihan /c cmd.exe untuk melaksanakan arahan dan menghuraikan output untuk kod ralat.

Dengan menyesuaikan teknik ini berdasarkan sistem pengendalian anda, anda boleh mendapatkan semula dengan berkesan kod keluar bagi arahan luaran yang dilaksanakan melalui pakej os/exec dalam Go.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kod Keluar daripada `os/exec` dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan