التسجيل
في الأنظمة المتوافقة مع معيار POSIX، تُرسل إشارة SIGHUP ( " إشارة انقطاع الاتصال ") إلى العملية عند إغلاق طرفية التحكم الخاصة بها. صُممت هذه الإشارة في الأصل لإعلام العملية بانقطاع خط الاتصال التسلسلي . SIGHUP ثابت رمزي مُعرّف في ملف الرأس .signal.h
تاريخ

كان الوصول إلى أنظمة الحاسوب لسنوات عديدة يتم عبر توصيل طرفية بنظام حاسوب مركزي باستخدام خط تسلسلي وبروتوكول RS -232 . وعندما كان يجري تطوير نظام مقاطعات برمجية ، تُسمى إشارات، تم تخصيص إحدى هذه الإشارات للاستخدام عند إنهاء المكالمة.
يتم إرسال إشارة SIGHUP إلى البرامج عند انقطاع خط الاتصال التسلسلي، وغالبًا ما يكون ذلك بسبب إنهاء المستخدم المتصل للاتصال بفصل جهاز المودم . ويكتشف النظام انقطاع الخط عبر إشارة الكشف عن فقدان حامل البيانات (DCD).
لطالما كانت الإشارات وسيلة ملائمة للتواصل بين العمليات (IPC)، ولكن في التطبيقات الأولى، لم تكن هناك إشارات قابلة للتخصيص من قِبل المستخدم (مثل SIGUSR1 وSIGUSR2 اللتين أُضيفتا لاحقًا ) يمكن للبرامج اعتراضها وتفسيرها لأغراضها الخاصة. لهذا السبب، كانت التطبيقات التي لا تتطلب طرفية تحكم، مثل البرامج الخدمية ، تعيد استخدام إشارة SIGHUP لإعادة قراءة ملفات التكوين أو إعادة التهيئة. ولا يزال هذا النهج مُتبعًا حتى اليوم في حزم برمجية مثل Apache و Sendmail .
الاستخدام الحديث
مع تراجع استخدام خطوط الاتصال التسلسلي، تغير معنى إشارة SIGHUP نوعًا ما في الأنظمة الحديثة، حيث تشير غالبًا إلى إغلاق طرفية تحكم وهمية أو افتراضية . إذا تم تنفيذ أمر داخل نافذة طرفية، ثم أُغلقت النافذة أثناء استمرار عملية الأمر، فإنها تتلقى إشارة SIGHUP. [ 1 ]
إذا كانت العملية التي تستقبل إشارة SIGHUP عبارة عن غلاف يونكس ، فإنها كجزء من عملية التحكم في العمليات ، غالبًا ما تعترض الإشارة وتضمن استمرار جميع العمليات المتوقفة قبل إرسال الإشارة إلى العمليات الفرعية (أو بالأحرى، مجموعات العمليات ، التي يمثلها الغلاف داخليًا على أنها "مهمة")، والتي تقوم افتراضيًا بإنهاء هذه العمليات. [ 2 ]
This can be circumvented in two ways. Firstly, the Single UNIX Specification describes a shell utility called nohup, which can be used as a wrapper to start a program and make it ignore SIGHUP by default. Secondly, child process groups can be "disowned" by invoking disown with the job id, which removes the process group from the shell's job table (so they will not be sent SIGHUP), or (optionally) keeps them in the job table but prevents them from receiving SIGHUP on shell termination.
Different shells also have other methods of controlling and managing SIGHUP, such as the disown facility of ksh. Most modern Linux distributions documentation specify using kill -HUP <processID> to send the SIGHUP signal.[3]
Daemon programs sometimes use SIGHUP as a signal to restart themselves, the most common reason for this being to re-read a configuration file that has been changed.
Details
Symbolic signal names are used because signal numbers can vary across platforms, but XSI-conformant systems allow the use of the numeric constant 1 to be used to indicate a SIGHUP, which the vast majority of systems in fact use.
SIGHUP can be handled. That is, programmers can define the action they want to occur upon receiving a SIGHUP, such as calling a function, ignoring it, or restoring the default action.
The default action on POSIX-compliant systems is an abnormal termination.
See also
References
- ↑Kerrisk, Michael, ed. (25 July 2009), "SIGNAL(7)", Linux Programmer's Manual (version 3.22), The Linux Kernel Archives, retrieved 23 September 2009.
- ↑Garrels, Machtelt, ed. (27 December 2008), "Signals", Bash Guide for Beginners, ver. 1.11, The Linux Documentation Project, retrieved 23 September 2009.
- ↑Kerrisk, Michael, ed. (25 July 2009), "KILL(2)", Linux Programmer's Manual (version 3.22), The Linux Kernel Archives, retrieved 23 September 2009.
- Unix signals
