_exit(2)

الاسم
_exit, _Exit - إنهاء العملية المستدعية

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <unistd.h>

[[noreturn]] void _exit(int status);

#include <stdlib.h>

[[noreturn]] void _Exit(int status);

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

_Exit():
    _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

الوصف
_exit() ينهي العملية المستدعية "فورًا". تُغلق أي واصفات ملفات مفتوحة تابعة للعملية. يرث init(1) أي أطفال للعملية (أو أقرب عملية "معيد التقاط فرعي" كما هو معرف باستخدام عملية prctl(2) PR_SET_CHILD_SUBREAPER). يُرسل إشارة SIGCHLD إلى والد العملية.

تُعاد القيمة status & 0xFF إلى العملية الأم كحالة خروج العملية، ويمكن للوالد جمعها باستخدام إحدى استدعاءات عائلة wait(2).

الدالة _Exit() مكافئة لـ _exit().

قيمة الإرجاع
لا تعود هذه الدوال.

المعايير

_exit()
    POSIX.1-2024.

_Exit()
    C11، ‏POSIX.1-2024.

التاريخ

_exit()
    4.3BSD، SVr4، POSIX.1-1988.

_Exit()
    C99، POSIX.1-2001.

ملاحظات
لمناقشة حول تأثيرات الخروج، ونقل حالة الخروج، وعمليات الزومبي، والإشارات المرسلة، وما إلى ذلك، انظر exit(3).

الدالة _exit() تشبه exit(3)، لكنها لا تستدعي أي دوال مسجلة مع atexit(3) أو on_exit(3). لا تُفرغ تيارات stdio(3) المفتوحة. من ناحية أخرى، _exit() تغلق واصفات الملفات المفتوحة، وقد يتسبب هذا في تأخير غير معروف، في انتظار انتهاء الإخراج المعلق. إذا كان التأخير غير مرغوب فيه، فقد يكون من المفيد استدعاء دوال مثل tcflush(3) قبل استدعاء _exit(). ما إذا كان أي إدخال/إخراج معلق يُلغى، وأي إدخال/إخراج معلق قد يُلغى عند _exit()، يعتمد على التنفيذ.

  الاختلافات بين مكتبة C والنواة
النص أعلاه في الوصف يصف التأثير التقليدي لـ _exit()، وهو إنهاء عملية، وهذه هي الدلالات المحددة بواسطة POSIX.1 والمنفذة بواسطة دالة الغلاف لمكتبة C. على الأنظمة الحديثة، يعني هذا إنهاء جميع الخيوط في العملية.

على النقيض من دالة الغلاف لمكتبة C، استدعاء نظام Linux الخام _exit() ينهي فقط الخيط المستدعي، وتُنفذ إجراءات مثل إعادة توزيع العمليات الفرعية أو إرسال SIGCHLD إلى العملية الأم فقط إذا كان هذا هو آخر خيط في مجموعة الخيوط.

حتى glibc 2.3، استدعت دالة الغلاف _exit() استدعاء نظام النواة بنفس الاسم. منذ glibc 2.3، تستدعي دالة الغلاف exit_group(2)، من أجل إنهاء جميع الخيوط في عملية.

انظر أيضًا
execve(2), exit_group(2), fork(2), kill(2), wait(2), wait4(2), waitpid(2), atexit(3), exit(3), on_exit(3), termios(3)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.