Adakah yang bisa memberitahuku? Apa perbedaan antara exit(0)dan exit(1)dalam bahasa C?
Jawaban:
Apa perbedaan antara exit(0)dan exit(1)dalam bahasa C?
exit(0)menunjukkan penghentian program yang berhasil & ini sepenuhnya portabel, Sementara
exit(1)(biasanya) menunjukkan penghentian yang tidak berhasil. Namun, penggunaannya tidak portabel.
Perhatikan bahwa standar C mendefinisikan EXIT_SUCCESSdan EXIT_FAILUREmengembalikan status terminasi dari program C.
0dan EXIT_SUCCESSmerupakan nilai yang ditentukan oleh standar untuk menunjukkan penghentian yang berhasil, namun, hanya EXIT_FAILUREnilai standar untuk mengembalikan penghentian yang tidak berhasil. 1digunakan untuk hal yang sama di banyak implementasi.
Referensi:
C99 Standar: 7.20.4.3 exitFungsi
Para 5
Akhirnya, kontrol dikembalikan ke lingkungan host. Jika nilai status nol atau
EXIT_SUCCESS, bentuk implementasi status penghentian sukses dikembalikan. Jika nilai status adalahEXIT_FAILURE, bentuk implementasi yang ditentukan dari status tidak berhasil dihentikan dikembalikan. Jika tidak, status yang dikembalikan akan ditentukan oleh implementasi.
exitadalah yang paling tidak menjadi perhatian Anda (sih, mungkin bahkan tidak ada pustaka C yang tersedia di sana. NOTHING IS PORTABLE !!! 111).
exitdengan nilai ganjil menunjukkan keberhasilan. exit(0)diperlakukan sebagai kasus khusus demi kesesuaian C. Ya, POSIX adalah standar, tetapi tidak semua sistem sesuai dengannya. Jika Anda ingin menulis kode yang mengasumsikan POSIX, Anda bebas melakukannya, tetapi itu membatasi portabilitas kode Anda.
exit dalam bahasa C mengambil bilangan bulat yang mewakili status keluar.
Biasanya, status keluar 0 dianggap berhasil, atau keluar yang disengaja yang disebabkan oleh eksekusi program yang berhasil.
Status keluar 1 dianggap gagal, dan yang paling umum berarti program harus keluar karena alasan tertentu, dan tidak berhasil menyelesaikan semua hal dalam alur program normal.
Berikut Sumber Daya GNU berbicara tentang Status Keluar.
Seperti yang telah dinyatakan @Als, dua konstanta harus digunakan di tempat 0 dan 1.
EXIT_SUCCESS didefinisikan oleh standar menjadi nol.
EXIT_FAILURE tidak dibatasi oleh standar untuk menjadi satu, tetapi banyak sistem yang menerapkannya sebagai satu.
Perbedaannya adalah nilai yang dikembalikan ke lingkungan 0dalam kasus sebelumnya dan 1dalam kasus terakhir:
$ ./prog_with_exit_0
$ echo $?
0
$
dan
$ ./prog_with_exit_1
$ echo $?
1
$
Perhatikan juga bahwa nilai makro EXIT_SUCCESSdan EXIT_FAILUREdigunakan sebagai argumen untuk exitberfungsi adalah implementasi yang ditentukan tetapi biasanya diatur ke masing 0- masing dan angka bukan nol. (POSIX EXIT_SUCCESSharus 0). Jadi biasanya exit(0)berarti sukses dan exit(1)gagal.
Pemanggilan exitfungsi dengan argumen dalam mainfungsi setara dengan pernyataan returndengan argumen yang sama.
exit adalah panggilan sistem yang digunakan untuk menyelesaikan proses yang sedang berjalan dari pemanggilannya. Parameter untuk keluar digunakan untuk menginformasikan proses induk tentang status proses anak. Jadi, exit (0) dapat digunakan (dan sering digunakan) untuk menunjukkan keberhasilan eksekusi suatu proses dan exit (1) untuk menandai kesalahan. link referensi
exit(0) berarti Program (Proses) berakhir secara normal dengan sukses ..
exit(1) berarti program (proses) berakhir secara normal tidak berhasil ..
Jika Anda ingin mengamati hal ini Anda harus tahu penanganan sinyal dan manajemen proses di Unix ...
tahu tentang sigaction, watipid()..untuk () ... seperti .... API ...........
exit(0)berperilaku seperti return 0dalam main()fungsi, exit(1)berperilaku seperti return 1. Standarnya adalah, mainfungsi itu return 0, jika program berhasil berakhir sedangkan nilai bukan nol berarti program dihentikan dengan semacam kesalahan.
exit (0) sama dengan keluar (EXIT_SUCCESS).
exit (1) sama dengan keluar (EXIT_FAILURE).
Jika gagal, biasanya setiap nilai positif dikembalikan untuk keluar dari proses, yang dapat Anda temukan di shell dengan menggunakan $ ?.
Nilai lebih dari 128 yang disebabkan oleh pemutusan sinyal. Jadi jika ada perintah shell diakhiri oleh sinyal, status pengembalian harus (128 + nomor sinyal).
Sebagai contoh:
Jika ada perintah shell yang diakhiri oleh SIGINT, maka $? akan memberikan 130 (128 + 2) (Berikut 2 adalah nomor sinyal untuk SIGINT, periksa dengan menggunakan kill -l)
exit () harus selalu dipanggil dengan nilai integer dan nilai bukan nol digunakan sebagai kode kesalahan.
Lihat juga: Penggunaan fungsi exit ()
exit function. Dalam Bahasa Pemrograman C, fungsi keluar memanggil semua fungsi yang terdaftar di keluar dan menghentikan program.
exit(1)berarti program (proses) berhenti tidak berhasil.
Buffer file dibilas, aliran ditutup, dan file sementara dihapus
exit(0) berarti Program (Proses) berhasil dihentikan.
EXIT_FAILURE) tidak cukup.