Saya menggunakan perintah system()
di C untuk mengeksekusi perintah seperti sc query mysql
atau net start mysql
.
Jika parameternya adalah null pointer maka ia mengembalikan 1 jika prosesor cmd OK, jika tidak maka ia mengembalikan 0. Pada eksekusi perintah yang sukses, ia mengembalikan 0.
Pertanyaan saya adalah: Dapatkah saya mendapatkan daftar nilai kembalinya? Seperti apa yang akan dikembalikan jika perintahnya tidak valid atau apa nilai yang dikembalikan pada eksekusi yang tidak berhasil? Saya ingin melakukan hal yang berbeda tergantung pada nilai balik dari system()
.
Yang perlu Anda lakukan adalah man system
untuk mengetahui lebih banyak tentang system()
DESKRIPSI system() mengeksekusi perintah yang ditentukan dalam perintah dengan memanggil perintah /bin/sh -c, dan kembali setelah perintah telah selesai. Selama eksekusi perintah, SIGCHLD akan diblok, dan SIGINT dan SIGQUIT akan diabaikan.
NILAI KEMBALIAN Nilai yang dikembalikan adalah -1 jika terjadi kesalahan (misalnya fork(2) gagal), dan status pengembalian perintah jika tidak. Yang terakhir ini Status yang terakhir ini dalam format yang ditentukan dalam wait(2). Dengan demikian, kode keluar dari perintah akan menjadi WEXITSTATUS(status). Jika /bin/sh tidak dapat dieksekusi tidak dapat dieksekusi, status keluar akan menjadi status dari perintah yang melakukan keluar(127). Jika nilai perintah adalah NULL, system() mengembalikan status nonzero jika shell tersedia, dan nol jika tidak.
Sebagai dokumen
state system() mengembalikan -1
jika membuat proses baru untuk perintah yang akan dieksekusi gagal, jika tidak maka mengembalikan kode keluar dari perintah yang dieksekusi. ini adalah nilai yang sama yang dapat Anda ambil menggunakan echo $?
di unix atau echo %ERRORLEVEL%
di windows setelah mengeksekusi perintah yang sama dalam shell. Jadi, jika Anda ingin menangani nilai yang dikembalikan, Anda harus melihat apa yang dikembalikan oleh perintah yang dieksekusi.
system() mengembalikan kode keluar dari proses yang Anda mulai.
Kode exit umumnya hanya memiliki konvensi bahwa kode exit 0 berarti sukses dan bukan nol berarti gagal. Untuk arti sebenarnya dari berbagai kode keluar, kode-kode tersebut khusus untuk setiap program, dan kemudian sesuai dengan keinginan programmer. Anda harus mencari dokumentasi dari program tertentu yang sedang Anda jalankan (Meskipun lebih sering daripada tidak, itu tidak didokumentasikan, jadi Anda harus membaca kode sumbernya)