Adakah yang bisa memberitahuku? Apa perbedaan antara exit(0)
dan exit(1)
dalam bahasa C?
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_SUCCESS
dan EXIT_FAILURE
mengembalikan status terminasi dari program C.
0
dan EXIT_SUCCESS
merupakan nilai yang ditentukan oleh standar untuk menunjukkan penghentian yang berhasil, namun, hanya EXIT_FAILURE
nilai standar untuk mengembalikan penghentian yang tidak berhasil. 1
digunakan untuk hal yang sama di banyak implementasi.
Referensi:
C99 Standar: 7.20.4.3 exit
Fungsi
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.
EXIT_FAILURE
) tidak cukup.exit
adalah yang paling tidak menjadi perhatian Anda (sih, mungkin bahkan tidak ada pustaka C yang tersedia di sana. NOTHING IS PORTABLE !!! 111).exit
dengan 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.Keluar dari Sukses
Biasanya, status keluar 0 dianggap berhasil, atau keluar yang disengaja yang disebabkan oleh eksekusi program yang berhasil.
Keluar dari Kegagalan
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.sumber
exit(0)
menunjukkan bahwa program dihentikan tanpa kesalahan.exit(1)
menunjukkan bahwa ada kesalahan.Anda dapat menggunakan nilai yang berbeda selain
1
untuk membedakan berbagai jenis kesalahan.sumber
Perbedaannya adalah nilai yang dikembalikan ke lingkungan
0
dalam kasus sebelumnya dan1
dalam kasus terakhir:dan
Perhatikan juga bahwa nilai makro
EXIT_SUCCESS
danEXIT_FAILURE
digunakan sebagai argumen untukexit
berfungsi adalah implementasi yang ditentukan tetapi biasanya diatur ke masing0
- masing dan angka bukan nol. (POSIXEXIT_SUCCESS
harus 0). Jadi biasanyaexit(0)
berarti sukses danexit(1)
gagal.Pemanggilan
exit
fungsi dengan argumen dalammain
fungsi setara dengan pernyataanreturn
dengan argumen yang sama.sumber
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
sumber
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 ...........sumber
exit(0)
berperilaku sepertireturn 0
dalammain()
fungsi,exit(1)
berperilaku sepertireturn 1
. Standarnya adalah,main
fungsi itureturn 0
, jika program berhasil berakhir sedangkan nilai bukan nol berarti program dihentikan dengan semacam kesalahan.sumber
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)
sumber
Ketika eksekusi berakhir (keluar), ia mengembalikan nilai ke shell yang menjalankannya.
exit(0)
biasanya menunjukkan bahwa semuanya baik-baik saja, sementaraexit(1)
menunjukkan bahwa ada sesuatu yang salah.sumber
exit () harus selalu dipanggil dengan nilai integer dan nilai bukan nol digunakan sebagai kode kesalahan.
Lihat juga: Penggunaan fungsi exit ()
sumber
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 dihapusexit(0)
berarti Program (Proses) berhasil dihentikan.sumber