.\" -*- coding: UTF-8 -*- .\" Copyright 2000, Andries E. Brouwer .\" Copyright 2007, Michael Kerrisk .\" 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 signal 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم signal \- معالجة الإشارات وفق معيار ANSI C .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBtypedef typeof(void (int)) *sighandler_t;\fP .P \fBsighandler_t signal(int \fP\fIsignum\fP\fB, sighandler_t \fP\fIhandler\fP\fB);\fP .fi .SH الوصف \fBتحذير\fP: يختلف سلوك \fBsignal\fP() عبر إصدارات UNIX، كما اختلف تاريخيًا عبر إصدارات Linux المختلفة. \fBتجنب استخدامها\fP: استخدم \fBsigaction\fP(2) بدلاً من ذلك. انظر \fIقابلية النقل\fP أدناه. .P تضبط \fBsignal\fP() تصرف الإشارة \fIsignum\fP إلى \fIhandler\fP، والذي يكون إما \fBSIG_IGN\fP أو \fBSIG_DFL\fP أو عنوان دالة يحددها المبرمج (معالج إشارة). .P إذا تم تسليم الإشارة \fIsignum\fP إلى العملية، فيحدث أحد الأمور التالية: .TP 3 * إذا ضُبط التصرف على \fBSIG_IGN\fP، فتُتجاهل الإشارة. .TP * إذا ضُبط التصرف على \fBSIG_DFL\fP، فيحدث الإجراء المبدئي المرتبط بالإشارة (انظر \fBsignal\fP(7)). .TP * إذا ضُبط التصرف على دالة، فإما يُعاد ضبط التصرف أولاً إلى \fBSIG_DFL\fP أو تُحجب الإشارة (انظر \fIقابلية النقل\fP أدناه)، ثم تُستدعى \fIhandler\fP مع الوسيط \fIsignum\fP. إذا تسبب استدعاء المعالج في حجب الإشارة، فتُرفع الحجب عن الإشارة عند العودة من المعالج. .P لا يمكن التقاط الإشارتين \fBSIGKILL\fP و \fBSIGSTOP\fP أو تجاهلهما. .SH "قيمة الإرجاع" تُرجع \fBsignal\fP() القيمة السابقة لمعالج الإشارة. عند الفشل، تُرجع \fBSIG_ERR\fP، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEINVAL\fP \fIsignum\fP غير صالح. .SH الإصدارات .\" libc4 and libc5 define .\" .IR SignalHandler ; استخدام \fIsighandler_t\fP هو امتداد GNU، يُكشف عنه إذا عُرّف \fB_GNU_SOURCE\fP؛ كما تعرّف glibc (المشتق من BSD) \fIsig_t\fP إذا عُرّف \fB_BSD_SOURCE\fP (glibc 2.19 والإصدارات الأقدم) أو \fB_DEFAULT_SOURCE\fP (glibc 2.19 والإصدارات الأحدث). التعريف المعياري لـ \fBsignal\fP() هو: .P .in +4n .EX \fBtypeof(void (int)) *signal(int \fP\fIsignum\fP\fB, typeof(void (int)) *\fP\fIhandler\fP\fB);\fP .EE .in .SS "قابلية النقل" الاستخدام الوحيد القابل للنقل لـ \fBsignal\fP() هو ضبط تصرف إشارة إلى \fBSIG_DFL\fP أو \fBSIG_IGN\fP. تختلف الدلالات عند استخدام \fBsignal\fP() لإنشاء معالج إشارة عبر الأنظمة (ويسمح POSIX.1 صراحةً بهذا الاختلاف)؛ \fBلا تستخدمها لهذا الغرض.\fP .P حل POSIX.1 فوضى قابلية النقل بتحديد \fBsigaction\fP(2)، الذي يوفر تحكمًا صريحًا في الدلالات عند استدعاء معالج إشارة؛ استخدم تلك الواجهة بدلاً من \fBsignal\fP(). .SH المعايير C11، ‏POSIX.1\-2024. .SH التاريخ C89, POSIX.1\-2001. .P في أنظمة UNIX الأصلية، عندما يُستدعى معالج أُنشئ باستخدام \fBsignal\fP() عن طريق تسليم إشارة، يُعاد ضبط تصرف الإشارة إلى \fBSIG_DFL\fP، ولا يحجب النظام تسليم حالات إضافية من الإشارة. هذا يعادل استدعاء \fBsigaction\fP(2) مع الأعلام التالية: .P .in +4n .EX sa.sa_flags = SA_RESETHAND | SA_NODEFER; .EE .in .P يوفر System\ V أيضًا هذه الدلالات لـ \fBsignal\fP(). كان هذا سيئًا لأنه قد تُسلم الإشارة مرة أخرى قبل أن تتاح للمعالج فرصة إعادة تأسيس نفسه. علاوة على ذلك، قد تؤدي التسليمات السريعة لنفس الإشارة إلى استدعاءات متكررة للمعالج. .P حسّن BSD هذا الموقف، لكن للأسف غيّر أيضًا دلالات واجهة \fBsignal\fP() الموجودة أثناء ذلك. في BSD، عندما يُستدعى معالج إشارة، لا يُعاد ضبط تصرف الإشارة، وتُحجب حالات إضافية من الإشارة من التسليم أثناء تنفيذ المعالج. علاوة على ذلك، تُعاد تشغيل بعض استدعاءات النظام الحاجبة آليًا إذا قاطعها معالج إشارة (انظر \fBsignal\fP(7)). دلالات BSD تعادل استدعاء \fBsigaction\fP(2) مع الأعلام التالية: .P .in +4n .EX sa.sa_flags = SA_RESTART; .EE .in .P الوضع على Linux هو كالتالي: .IP \[bu] 3 استدعاء نظام \fBsignal\fP() في النواة يوفر دلالات System\ V. .IP \[bu] .\" .\" System V semantics are also provided if one uses the separate .\" .BR sysv_signal (3) .\" function. .\" .IP \[bu] .\" The .\" .BR signal () .\" function in Linux libc4 and libc5 provide System\ V semantics. .\" If one on a libc5 system includes .\" .I .\" instead of .\" .IR , .\" then .\" .BR signal () .\" provides BSD semantics. مبدئيًا، في glibc 2 والإصدارات الأحدث، لا تستدعي دالة التغليف \fBsignal\fP() استدعاء نظام النواة. بدلاً من ذلك، تستدعي \fBsigaction\fP(2) باستخدام أعلام توفر دلالات BSD. يُوفر هذا السلوك المبدئي طالما عُرّف ماكرو اختبار ميزة مناسب: \fB_BSD_SOURCE\fP في glibc 2.19 والإصدارات الأقدم أو \fB_DEFAULT_SOURCE\fP في glibc 2.19 والإصدارات الأحدث. (مبدئيًا، هذه الماكروات مُعرّفة؛ انظر \fBfeature_test_macros\fP(7) للتفاصيل.) إذا لم يُعرّف مثل هذا الماكرو، فتوفر \fBsignal\fP() دلالات System\ V. .SH ملاحظات تأثيرات \fBsignal\fP() في عملية متعددة الخيوط غير محددة. .P وفقًا لـ POSIX، يكون سلوك العملية غير محدد بعد تجاهلها لإشارة \fBSIGFPE\fP أو \fBSIGILL\fP أو \fBSIGSEGV\fP التي لم تُنتج بواسطة \fBkill\fP(2) أو \fBraise\fP(3). قسمة الأعداد الصحيحة على صفر لها نتيجة غير محددة. في بعض البنيات ستنتج إشارة \fBSIGFPE\fP. (كما أن قسمة أصغر عدد صحيح سالب على \-1 قد تنتج \fBSIGFPE\fP). تجاهل هذه الإشارة قد يؤدي إلى حلقة مفرغة. .P انظر \fBsigaction\fP(2) للتفاصيل حول ما يحدث عندما يُضبط التصرف \fBSIGCHLD\fP على \fBSIG_IGN\fP. .P انظر \fBsignal\-safety\fP(7) للحصول على قائمة بالدوال الآمنة للإشارات غير المتزامنة التي يمكن استدعاؤها بأمان من داخل معالج إشارة. .SH "انظر أيضًا" \fBkill\fP(1), \fBalarm\fP(2), \fBkill\fP(2), \fBpause\fP(2), \fBsigaction\fP(2), \fBsignalfd\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2), \fBsigsuspend\fP(2), \fBbsd_signal\fP(3), \fBkillpg\fP(3), \fBraise\fP(3), \fBsiginterrupt\fP(3), \fBsigqueue\fP(3), \fBsigsetops\fP(3), \fBsigvec\fP(3), \fBsysv_signal\fP(3), \fBsignal\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .