Кіріспе
Unix сигналы
POSIX-ке сәйкес келетін платформаларда SIGHUP ("сигналды үздіру") – процестің басқару терминалы жабылып қалғанда оған жіберілетін сигнал. Бұл бастапқыда желілік байланыстың үзілуі туралы хабарлау үшін жасалған. SIGHUP – сигнал.h бас файлында анықталған символдық тұрақты.
On POSIX compliant platforms, SIGHUP ("signal hang up") is a signal sent to a process when its controlling terminal is closed. It was originally designed to notify the process of a serial line drop. SIGHUP is a symbolic constant defined in the header file signal. h.
Тарих
Көптеген жылдар бойы компьютерлік жүйелерге қол жеткізу терминалды тізбекті желі және RS 232 протоколы арқылы негізгі жүйеге (mainframe) қосудан тұрды. Бағдарламалық үзілістер жүйесі әзірленгенде, олардың бірі байланыс үзілген кезде пайдалану үшін белгіленді. SIGHUP бағдарламаларға сериялық желі үзілген кезде жіберілетін, көбінесе пайдаланушы модемді түсіріп, қосылымды ажыратқандықтан. Жүйе желінің үзілгенін жоғалған деректерді тасымалдауды анықтау (DCD) сигналы арқылы анықтайтын. Сигналдар процестер аралық байланыс (IPC) үшін әрқашан ыңғайлы әдіс болды, бірақ бастапқы нұсқаларда пайдаланушылар өздері анықтай алатын сигналдар (мысалы, SIGUSR1 және SIGUSR2 сияқты кейінірек қосылғандары) болған жоқ, оларды бағдарламалар өз мақсаттары үшін қабылдап, түсіндіре алатын. Осы себепті, басқару терминалы қажет емес, мысалы, даэмондар (daemons) SIGHUP сигналын конфигурациялық файлдарды қайта оқу немесе қайта инициализациялау үшін пайдаланды. Бұл әдет Apache және Sendmail сияқты бағдарламаларда бүгінге дейін сақталып келеді.
Қазіргі қолданысы
Серілік желі арқылы қол жеткізудің азаюымен қатар, заманауи жүйелерде SIGHUP сигналының мағынасы өзгеріп, көбінесе бақылау псевдо немесе виртуалды терминалдың жабылуын білдіреді. Егер команда терминал терезесінде орындалып жатса және команда процесі әлі жұмыс істеп тұрғанда терминал терезесі жабылып қалса, ол SIGHUP сигналын алады. Егер SIGHUP сигналын қабылдайтын процесс Unix қабығы болса, жұмыс басқару бөлігі ретінде ол көбінесе сигналды ұстап, барлық тоқтатылған процестердің сигналды бала процестерге (дәлірек айтқанда, қабықшада "жұмыс" ретінде көрсетілетін процестер тобына) жібермес бұрын жалғастырылуын қамтамасыз етеді, бұл оларды әдепкі бойынша тоқтатуға әкеледі. Мұны екі тәсілмен айналып өтуге болады. Біріншіден, Single UNIX Specification nohup деп аталатын қабықша утилитасын сипаттайды, оны бағдарламаны іске қосу үшін орауыш ретінде пайдалануға болады және ол SIGHUP сигналын әдепкі бойынша елемеуге мәжбүрлейді. Екіншіден, бала процестер тобын "бас тартуға" болады, яғни жұмыс идентификаторы арқылы disown командасын шақыру арқылы процестер тобын қабықшаның жұмыс кестесінен алып тастауға болады (сол арқылы оларға SIGHUP сигналы жіберілмейді) немесе (қосымша опция ретінде) оларды жұмыс кестесінде сақтап, қабықша тоқтатылғанда SIGHUP сигналын алудан қорғауға болады. Әртүрлі қабықшаларда SIGHUP-ты басқарудың басқа да әдістері бар, мысалы, ksh қабығының бас тарту мүмкіндігі. Көптеген қазіргі заманғы Linux дистрибутивтерінің құжаттамасында SIGHUP сигналын жіберу үшін kill HUP <processID> командасын пайдалану ұсынылады. Демон бағдарламалары кейде SIGHUP сигналын өздерін қайта іске қосу үшін пайдаланады, мұның ең көп кездесетін себебі – өзгертілген конфигурациялық файлды қайта оқу.
Егжей-тегжейлер
Символдық сигнал атаулары қолданылады, себебі сигнал нөмірлері платформалар бойынша өзгеруі мүмкін, бірақ XSI стандатын сақтайтын жүйелер SIGHUP сигналын көрсету үшін сандық тұрақты 1-ді пайдалануға мүмкіндік береді, және шындығында жүйелердің көпшілігі осылай істейді. SIGHUP сигналын өңдеуге болады. Яғни, бағдарламашылар SIGHUP сигналын алған кезде қандай әрекет орындалуын анықтай алады, мысалы, функцияны шақыру, оны назарға алмау немесе бастапқы әрекетті қайта орнату. POSIX стандатына сәйкес жүйелерде бастапқы әрекет – қалыптан тыс тоқтату.