Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Dapatkan Kod Keluar dengan Amanah daripada Pakej os/exec Go?
Menentukan Kod Keluar dalam Pakej os/exec Go
Dalam Go, pakej os/exec menyediakan mekanisme yang mudah untuk melaksanakan arahan sistem. Walau bagaimanapun, mendapatkan kod keluar perintah yang dilaksanakan boleh menjadi agak rumit.
Masalahnya
Kaedah Command.Run() dan Command.Output() lakukan tidak memberikan akses terus kepada kod keluar. Walaupun Command.Wait() akan mengembalikan ralat untuk kod keluar bukan sifar, ralat ini tidak termasuk nilai kod keluar tertentu.
Penyelesaian Merentas Platform
Malangnya, tiada API platform-agnostik untuk mendapatkan semula kod keluar. Walau bagaimanapun, untuk sistem Linux, pendekatan berikut boleh digunakan:
import ( "syscall" ) ... // Attempt to execute the command if err := cmd.Start(); err != nil { log.Fatalf("cmd.Start: %v", err) } // Wait for the command to complete if err := cmd.Wait(); err != nil { if exitErr, ok := err.(*exec.ExitError); ok { // Convert exit status to an integer exitStatus := exitErr.ExitCode() log.Printf("Exit Status: %d", exitStatus) } else { log.Fatalf("cmd.Wait: %v", err) } }
Dalam penyelesaian ini, kami bergantung pada struktur ExitError bukan standard yang tersedia dalam pakej os/exec. Dengan menyemak kehadirannya, kami boleh mengakses kaedah ExitCode() untuk mendapatkan semula kod keluar.
Limitation
Sila ambil perhatian bahawa pendekatan ini khusus untuk Linux dan mungkin tidak berfungsi pada platform lain. Rujuk dokumentasi pakej os/exec untuk kaedah alternatif atau rujuk sumber khusus platform.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Kod Keluar dengan Amanah daripada Pakej os/exec Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!