sigset(3)

الاسم
sigset, sighold, sigrelse, sigignore - واجهة برمجة تطبيقات الإشارات للنظام V

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

موجز
#include <signal.h>

typedef typeof(void (int))  *sighandler_t;

[[deprecated]] sighandler_t sigset(int sig, sighandler_t disp);

[[deprecated]] int sighold(int sig);
[[deprecated]] int sigrelse(int sig);
[[deprecated]] int sigignore(int sig);

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

sigset(), sighold(), sigrelse(), sigignore():
    _XOPEN_SOURCE >= 500

الوصف
تُوفر هذه الدوال في glibc كواجهة توافق للبرامج التي تستخدم واجهة برمجة تطبيقات الإشارات التاريخية للنظام V. هذه الواجهة قديمة: يجب على التطبيقات الجديدة استخدام واجهة برمجة تطبيقات الإشارات POSIX (sigaction(2), sigprocmask(2)، إلخ.)

تعدل الدالة sigset() تصرف الإشارة sig. يمكن أن تكون الوسيطة disp عنوان دالة معالج إشارة، أو أحد الثوابت التالية:

SIG_DFL
    أعد ضبط تصرف sig إلى المبدئي.

SIG_IGN
    تجاهل sig.

SIG_HOLD
    أضف sig إلى قناع إشارات العملية، لكن اترك تصرف sig دون تغيير.

إذا حددت disp عنوان معالج إشارة، فإن sig يُضاف إلى قناع إشارات العملية أثناء تنفيذ المعالج.

إذا حُددت disp بقيمة غير SIG_HOLD، فإن sig يُزال من قناع إشارات العملية.

لا يمكن تغيير الإجراءات المقررة لـ SIGKILL و SIGSTOP.

تضيف الدالة sighold() sig إلى قناع إشارات العملية المستدعية.

تزيل الدالة sigrelse() sig من قناع إشارات العملية المستدعية.

تضبط الدالة sigignore() تصرف sig إلى SIG_IGN.

قيمة الإرجاع
عند النجاح، تُرجع sigset() SIG_HOLD إذا كانت sig محظورة قبل الاستدعاء، أو التصرف السابق للإشارة إذا لم تكن محظورة قبل الاستدعاء. عند الخطأ، تُرجع sigset() -1، مع ضبط errno للإشارة إلى الخطأ. (لكن انظر الأخطاء أدناه.)

تُرجع الدوال sighold() و sigrelse() و sigignore() 0 عند النجاح؛ عند الخطأ، تُرجع هذه الدوال -1 وتضبط errno للإشارة إلى الخطأ.

الأخطاء
بالنسبة لـ sigset()، انظر الأخطاء تحت sigaction(2) و sigprocmask(2).

بالنسبة لـ sighold() و sigrelse()، انظر الأخطاء تحت sigprocmask(2).

بالنسبة لـ sigignore()، انظر الأخطاء تحت sigaction(2).

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
sigset(), sighold(), sigrelse(), sigignore() | سلامة الخيوط | MT-Safe

المعايير
POSIX.1-2008.

sighandler_t
    GNU. يستخدم POSIX.1 نفس النوع لكن بدون typedef.

التاريخ
glibc 2.1. SVr4, POSIX.1-2001. يُصنف POSIX.1-2008 هذه الدوال كمهملة، موصياً باستخدام sigaction(2)، sigprocmask(2)، pthread_sigmask(3)، و sigsuspend(2) بدلاً منها.

ملاحظات
توفر الدالة sigset() دلالات موثوقة لمعالجة الإشارات (كما هو الحال عند استدعاء sigaction(2) مع sa_mask مساوٍ لـ 0).

في System V، توفر الدالة signal() دلالات غير موثوقة (كما هو الحال عند استدعاء sigaction(2) مع sa_mask مساوٍ لـ SA_RESETHAND | SA_NODEFER). في BSD، توفر signal() دلالات موثوقة. يترك POSIX.1-2001 هذه الجوانب من signal() غير محددة. انظر signal(2) لمزيد من التفاصيل.

من أجل انتظار إشارة، وفر كل من BSD و System V دالة تسمى sigpause(3)، ولكن هذه الدالة لها معطيات مختلفة في النظامين. راجع sigpause(3) للتفاصيل.

العلل
قبل glibc 2.2، لم تقم sigset() بإلغاء حظر sig إذا تم تحديد disp بقيمة غير SIG_HOLD.

قبل glibc 2.5، لا تُرجع sigset() بشكل صحيح التصرف السابق للإشارة في حالتين. أولاً، إذا تم تحديد disp كـ SIG_HOLD، فإن sigset() الناجحة تُرجع دائماً SIG_HOLD. بدلاً من ذلك، يجب أن تُرجع التصرف السابق للإشارة (إلا إذا كانت الإشارة محظورة، وفي هذه الحالة يجب إرجاع SIG_HOLD). ثانياً، إذا كانت الإشارة محظورة حالياً، فيجب أن تكون قيمة الإرجاع لـ sigset() الناجحة هي SIG_HOLD. بدلاً من ذلك، يُرجع التصرف السابق للإشارة. تم إصلاح هذه المشكلات منذ glibc 2.5.

انظر أيضًا
kill(2)، pause(2)، sigaction(2)، signal(2)، sigprocmask(2)، raise(3)، sigpause(3)، sigvec(3)، signal(7)

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

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

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