Rumah > pembangunan bahagian belakang > Golang > Mengapa Kod My Go Mengembalikan 'status keluar 1' Apabila Menggunakan exec.Command?

Mengapa Kod My Go Mengembalikan 'status keluar 1' Apabila Menggunakan exec.Command?

Mary-Kate Olsen
Lepaskan: 2024-11-24 04:24:15
asal
958 orang telah melayarinya

Why Does My Go Code Return

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

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

Setelah dilaksanakan, kod akan memaparkan mesej ralat terperinci berikut:

exit status 1: find: -exec: no terminating ";" or "+"
Salin selepas log masuk

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!

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