Rumah >pembangunan bahagian belakang >Golang >Mengapa Kod My Go Mengembalikan 'status keluar 1' Apabila Menggunakan exec.Command?
Menyahpepijat "keluar status 1" Ralat dalam exec.Command Go
Apabila menghadapi ralat "keluar status 1" yang membingungkan semasa melaksanakan arahan luaran menggunakan exec.Command Golang, ia boleh menjadi tugas yang sukar untuk menentukan punca sebenar. Panduan ringkas ini akan memberikan cerapan tentang menyelesaikan masalah ralat dengan berkesan.
Menggunakan Stderr untuk Mesej Ralat Dipertingkat
Secara lalai, exec.Command hanya menangkap output standard (stdout) apabila menjalankan perintah. Untuk mendapatkan semula mesej ralat yang lebih terperinci, anda boleh menggunakan sifat Stderr bagi struct exec.Command. Begini caranya:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\") var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr
Sekarang, apabila arahan itu dilaksanakan dan ralat berlaku, mesej ralat akan ditulis pada penimbal stderr dan bukannya "status keluar 1" generik.
Contoh
Pertimbangkan kod berikut coretan:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\") var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run() if err != nil { fmt.Println(fmt.Sprint(err) + ": " + stderr.String()) return } fmt.Println("Result: " + out.String())
Setelah dilaksanakan, kod akan memaparkan mesej ralat terperinci berikut:
exit status 1: find: -exec: no terminating ";" or "+"
Pertimbangan Tambahan
Perlu diperhatikan bahawa sesetengah arahan mungkin tidak mematuhi konvensyen kesilapan menulis kepada stderr. Sesetengah arahan mungkin mencetak ralat ke stdout, manakala yang lain mungkin mencetak ralat ke stderr tetapi masih mengembalikan status keluar yang berjaya (0). Oleh itu, mungkin perlu melaraskan kod untuk memenuhi perintah khusus yang anda laksanakan.
Atas ialah kandungan terperinci Mengapa Kod My Go Mengembalikan 'status keluar 1' Apabila Menggunakan exec.Command?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!