exit
من cppreference.com
معرفة في ملف <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 |