.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993, David Metcalfe .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH atexit 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم atexit \- تسجيل دالة لاستدعائها عند إنهاء العملية بشكل طبيعي .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint atexit(typeof(void (void)) *\fP\fIfunction\fP\fB);\fP .fi .SH الوصف تسجل دالة \fBatexit\fP() الدالة \fIfunction\fP المعطاة لاستدعائها عند إنهاء العملية بشكل طبيعي، إما عبر \fBexit\fP(3) أو عبر العودة من \fImain\fP() للبرنامج. تُستدعى الدوال المسجلة هكذا بترتيب عكسي لتسجيلها؛ لا تُمرر أي وسائط. .P قد تُسجل نفس الدالة عدة مرات: وتُستدعى مرة واحدة لكل تسجيل. .P .\" POSIX.1-2001, POSIX.1-2008 يتطلب POSIX.1 أن يسمح التطبيق بتسجيل 32 دالة على الأقل من هذا النوع. يمكن الحصول على الحد الفعلي الذي يدعمه التطبيق باستخدام \fBsysconf\fP(3). .P عند إنشاء عملية ابنة عبر \fBfork\fP(2)، فإنها ترث نسخًا من تسجيلات والديها. عند إجراء نداء ناجح لإحدى وظائف \fBexec\fP(3)، تُزال كافة التسجيلات. .SH "قيمة الإرجاع" ترجع دالة \fBatexit\fP() القيمة 0 إذا نجحت؛ وإلا، ترجع قيمة غير صفرية. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBatexit\fP() T} سلامة الخيوط MT\-Safe .TE .SH الإصدارات .\" POSIX.1-2001, POSIX.1-2008 .\" This can happen on OpenBSD 4.2 for example, and is documented .\" as occurring on FreeBSD as well. .\" glibc does "the Right Thing" -- invocation of the remaining .\" exit handlers carries on as normal. ينص POSIX.1 على أن نتيجة استدعاء \fBexit\fP(3) أكثر من مرة (أي استدعاء \fBexit\fP(3) داخل دالة مسجلة باستخدام \fBatexit\fP()) غير محددة. في بعض الأنظمة (ولكن ليس لينكس)، قد يؤدي هذا إلى تكرار لا نهائي؛ يجب ألا تستدعي البرامج المنقولة \fBexit\fP(3) داخل دالة مسجلة باستخدام \fBatexit\fP(). .SH المعايير C11, POSIX.1\-2008. .SH التاريخ POSIX.1\-2001،‏ C89،‏ C99،‏ SVr4،‏ 4.3BSD. .SH ملاحظات لا تُستدعى الدوال المسجلة باستخدام \fBatexit\fP() (و \fBon_exit\fP(3)) إذا أنهيت العملية بشكل غير طبيعي بسبب تسليم إشارة. .P إذا استدعت إحدى الدوال المسجلة \fB_exit\fP(2)، فلن تُستدعى أي دوال متبقية، ولن تُنفذ خطوات إنهاء العملية الأخرى التي يؤديها \fBexit\fP(3). .P تسجل دالتا \fBatexit\fP() و \fBon_exit\fP(3) الدوال في نفس القائمة: عند إنهاء العملية بشكل طبيعي، تُستدعى الدوال المسجلة بترتيب عكسي لتسجيلها بواسطة هاتين الدالتين. .P .\" In glibc, things seem to be handled okay وفقًا لـ POSIX.1، تكون النتيجة غير محددة إذا استخدم \fBlongjmp\fP(3) لإنهاء تنفيذ إحدى الدوال المسجلة باستخدام \fBatexit\fP(). .SS "ملاحظات لينكس" منذ glibc 2.2.3، يمكن استخدام \fBatexit\fP() (و \fBon_exit\fP(3)) داخل مكتبة مشتركة لإنشاء دوال تُستدعى عند تفريغ المكتبة المشتركة. .SH أمثلة .\" SRC BEGIN (atexit.c) .EX #include #include #include \& static void bye(void) { printf("That was all, folks\[rs]n"); } \& int main(void) { long a; int i; \& a = sysconf(_SC_ATEXIT_MAX); printf("ATEXIT_MAX = %ld\[rs]n", a); \& i = atexit(bye); if (i != 0) { fprintf(stderr, "cannot set exit function\[rs]n"); exit(EXIT_FAILURE); } \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fB_exit\fP(2), \fBdlopen\fP(3), \fBexit\fP(3), \fBon_exit\fP(3) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .