Cara Mengenalpasti Punca Ralat "Keluar Status 1" dalam eksekutif Golang.Arahan
Apabila melaksanakan kaedah exec.Command di Golang , menerima ralat "status keluar 1" boleh menjadi sangat mengecewakan. Ketiadaan maklumat khusus menghalang penyahpepijatan yang berkesan.
Untuk mendapatkan maklumat yang lebih terperinci, manfaatkan sifat Stderr bagi objek Perintah. Ini dicapai dengan:
var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run()
Dengan mengubah hala ralat ke penimbal stderr, anda boleh mengaksesnya sekiranya berlaku kegagalan arahan.
if err != nil { fmt.Println(fmt.Sprint(err) + ": " + stderr.String()) return }
Dalam sesetengah kes, output ialah dipaparkan dalam kedua-dua stdout dan stderr. Jika arahan itu mengembalikan kod ralat bukan sifar, seperti dalam contoh di bawah:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\")
Mesej ralat ialah:
exit status 1: find: -exec: no terminating ";" or "+"
Adalah penting untuk ambil perhatian bahawa walaupun stderr biasanya menunjukkan ralat, beberapa arahan mencetak ralat dalam stdout atau dalam stderr tanpa mengembalikan kod ralat. Oleh itu, mungkin perlu melaraskan kod anda untuk menampung arahan tertentu.
Atas ialah kandungan terperinci Mengapa `exec.Command` Golang Saya Mengembalikan 'Keluar Status 1'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!