exit
من cppreference.com
<tbody>
</tbody>
| معرفة في ملف <stdlib.h>
|
||
void exit( int exit_code ); |
(حتى C11) | |
_Noreturn void exit( int exit_code ); |
(منذ C11) | |
تتسبب في اغلاق عادي للبرنامج.
هذه الخطوات يتم تنفيذها عند حدوث اغلاق عادي للبرنامج:
- تنفيذ الدوال التي مررت إلى atexit بعكس الترتيب التي تم تسجيلها به.
- يتم إخلاء (fflush) وغلق (fclose) جميع تيارات السي المفتوحة (أي جميع الموارد المشار إليها بـ FILE*)
- يتم تسليم الزمام إلى بيئة التشغيل. في حالة أن
exit_codeتساوي الصفر أو EXIT_SUCCESS يتم إرجاع قيمة تدل على أن اغلاق البرنامج تم بعد نجاحه. في حالة كونه بـ EXIT_FAILURE يتم إرجاع قيمة تدل على الفشل.
ملحوظات
الدوال المسجلة بـ at_quick_exit لا يتم استدعائها.
السلوك غير معرف في حالة أن برنامج يستدعي exit أكثر من مرة أو في حالة استدعائه لـ exit و quick_exit.
السلوك أيضا غير معرف في حالة إنتهاء إحدى الدوال المسجلة بـ atexit بـ longjmp.
إنتهاء دالة الـ main سواء عن طريق الأمر return أو بالوصول إلى نهاية الدالة يؤدي إلى استدعاء تلقائي للدالة exit(). يتم استخدام قيمة أمر الـ return (أو صفر في حالة الـ return الضمني) كـ exit_code عند استدعاء الدالة.
المعطيات
| exit_code | - | رقم يعبر عن حالة البرنامج وقت الإغلاق. |
القيمة المُرجعة
(لا شيء)
مثال
قم بتشغيل هذا الكود:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp = fopen("data.txt","r");
if (fp == NULL) {
fprintf(stderr, "error opening file data.txt in function main()\n");
exit(1);
}
fclose(fp);
printf("Normal Return\n");
}
الخرج:
error opening file data.txt in function main()
أنظر أيضا
| تتسبب في إجهاض غير عادي للبرنامج (دالة) | |
| تسجل دالة يتم استدعائها تلو استدعاء exit() (دالة) | |
(C99) |
إنهاء عادي للبرنامج دون إخلاء كامل للموارد (دالة) |
مقالة مرجع C++ عن exit
| |