signal.h — заголовний файл стандартної бібліотеки мови програмування С, що використовується для зазначення того, як програма обробляє сигнали під час свого виконання. Сигнал може сповіщати про деяке відхилення від очікуваної поведінки програми (як, наприклад, ділення на нуль) або про деякі асинхронні події, що відбулися поза програмою (наприклад, якщо хтось натиснув кнопку переривання програми на клавіатурі).
Сигнал може генеруватися при виклику RAISE (посилає сигнал поточному процесові) або Kill (посилає сигнал будь-якого процесу). Кожна реалізація визначає якийсь сигнал, що генерує і визначає їх генерацію. Реалізація може визначати сигнали, які відрізняються від перерахованих тут. Стандартний заголовний файл <signal.h> може визначати додаткові макроси з іменами, які починаються з SIG, для вказання значення цих додаткових сигналів. Усі подібні значення є цілими константні виразами >= 0.
Можна вказувати обробник сигналу для усіх сигналів, окрім двох (SIGKILL та SIGSTOP не можуть бути перехоплені, блоковані або проігноровані). Обробник сигналу — функція, яка направляє виклики оточенню, коли приймає відповідний сигнал. Цільове оточення призупиняє виконання програми, доки обробник сигналу не поверне значення або викличе перехід (longjmp). Для максимальної переносимості, асинхронний обробник сигналу повинен:
- здійснювати (успішний) виклик сигналу функції
- присвоювати значення об'єктів з типом «непов'язана змінна» sig_atomic_t
- повертати управління
Якщо сигнал сповіщає про помилку всередині програми (а сигнал не асинхронний), то обробник сигналу може завешить її виконання, викликавши Abort, Exit або longjmp.
Методи
int raise(int sig)
. Штучно викликає сигнал.
(int sig, const char *s)
, виводить на stderr рядок, який містить номер сигналу. Застосовується у 4.3BSD, Solaris та Linux, однак, не вказаний у стандартах POSIX та .
На тих же системах string.h містить нестандартний (int sig)
, який працює аналогічно strerror.
void (*signal(int sig, void (*func)(int)))(int)
назначає дію, яку програма виконуватиме при отриманні сигналуsig
. Якщо значення func рівне SIG_DFL, то відбувається обробка за замовчуванням для сигналу. Якщо значення func рівне SIG_IGN, сигнал ігнорується. В інших випадках, func вказує на функцію обробник сигналу при отриманні сигналу.
Функція func може завершуватись виконанням операції виклику або викликом функції самозавершення, виводу або переходу.
Члени-типи
typedef i-type sig_atomic_t
Члени-макроси
- SIG_DFL — Використовується для вказання способу обробки сигналів за замовчуванням.
- SIG_IGN — Використовується для ігнорування сигналу.
- SIG_ERR — Код помилки.
Члени-константи
Константа | Значення | Стандарти | |
---|---|---|---|
SIGHUP | Відбій | POSIX | |
Переривання | ANSI | ||
SIGQUIT | Вихід | POSIX | |
SIGILL | Недопустима інструкція | ANSI | |
SIGABRT | Самозупинка | ANSI | |
SIGTRAP | Перехоплення події | POSIX | |
SIGIOT | Перехоплення вводу-виводу | 4.2 BSD | |
Перехоплення емуляції | 4.2 BSD | ||
SIGFPE | Виняток з плаваючою крапкою | ANSI | |
SIGKILL | Неперехоплюваний сигнал завершення | POSIX | |
SIGBUS | Помилка шини | 4.2 BSD | |
SIGSEGV | Порушення сегментації | ANSI | |
SIGSYS | Неправильний аргумент у системному виклику | 4.2 BSD | |
SIGPIPE | Порушення каналу | POSIX | |
SIGALRM | Завершення часу | POSIX | |
SIGTERM | Завершення | ANSI | |
Користувацький сигнал 1 | POSIX | ||
Користувацький сигнал 2 | POSIX | ||
SIGCHLD | Зміна статусу дочірнього процесу | POSIX | |
SIGCLD | Аналогічно SIGCHLD | System V | |
SIGPWR | Перезапуск після проблеми із живленням | System V | |
SIGXCPU | Обмеження процесорного часу | POSIX |
Посилання
- signal.h [ 25 жовтня 2009 у Wayback Machine.] на
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
signal h zagolovnij fajl standartnoyi biblioteki movi programuvannya S sho vikoristovuyetsya dlya zaznachennya togo yak programa obroblyaye signali pid chas svogo vikonannya Signal mozhe spovishati pro deyake vidhilennya vid ochikuvanoyi povedinki programi yak napriklad dilennya na nul abo pro deyaki asinhronni podiyi sho vidbulisya poza programoyu napriklad yaksho htos natisnuv knopku pererivannya programi na klaviaturi Signal mozhe generuvatisya pri vikliku RAISE posilaye signal potochnomu procesovi abo Kill posilaye signal bud yakogo procesu Kozhna realizaciya viznachaye yakijs signal sho generuye i viznachaye yih generaciyu Realizaciya mozhe viznachati signali yaki vidriznyayutsya vid pererahovanih tut Standartnij zagolovnij fajl lt signal h gt mozhe viznachati dodatkovi makrosi z imenami yaki pochinayutsya z SIG dlya vkazannya znachennya cih dodatkovih signaliv Usi podibni znachennya ye cilimi konstantni virazami gt 0 Mozhna vkazuvati obrobnik signalu dlya usih signaliv okrim dvoh SIGKILL ta SIGSTOP ne mozhut buti perehopleni blokovani abo proignorovani Obrobnik signalu funkciya yaka napravlyaye vikliki otochennyu koli prijmaye vidpovidnij signal Cilove otochennya prizupinyaye vikonannya programi doki obrobnik signalu ne poverne znachennya abo vikliche perehid longjmp Dlya maksimalnoyi perenosimosti asinhronnij obrobnik signalu povinen zdijsnyuvati uspishnij viklik signalu funkciyi prisvoyuvati znachennya ob yektiv z tipom nepov yazana zminna sig atomic t povertati upravlinnya Yaksho signal spovishaye pro pomilku vseredini programi a signal ne asinhronnij to obrobnik signalu mozhe zaveshit yiyi vikonannya viklikavshi Abort Exit abo longjmp Metodiint raise int sig Shtuchno viklikaye signal int sig const char s vivodit na stderr ryadok yakij mistit nomer signalu Zastosovuyetsya u 4 3BSD Solaris ta Linux odnak ne vkazanij u standartah POSIX ta Na tih zhe sistemah string h mistit nestandartnij int sig yakij pracyuye analogichno strerror void signal int sig void func int int naznachaye diyu yaku programa vikonuvatime pri otrimanni signalu sig Yaksho znachennya func rivne SIG DFL to vidbuvayetsya obrobka za zamovchuvannyam dlya signalu Yaksho znachennya func rivne SIG IGN signal ignoruyetsya V inshih vipadkah func vkazuye na funkciyu obrobnik signalu pri otrimanni signalu Funkciya func mozhe zavershuvatis vikonannyam operaciyi vikliku abo viklikom funkciyi samozavershennya vivodu abo perehodu Chleni tipitypedef i type sig atomic tChleni makrosiSIG DFL Vikoristovuyetsya dlya vkazannya sposobu obrobki signaliv za zamovchuvannyam SIG IGN Vikoristovuyetsya dlya ignoruvannya signalu SIG ERR Kod pomilki Chleni konstantiKonstanta Znachennya Standarti SIGHUP Vidbij POSIX Pererivannya ANSI SIGQUIT Vihid POSIX SIGILL Nedopustima instrukciya ANSI SIGABRT Samozupinka ANSI SIGTRAP Perehoplennya podiyi POSIX SIGIOT Perehoplennya vvodu vivodu 4 2 BSD Perehoplennya emulyaciyi 4 2 BSD SIGFPE Vinyatok z plavayuchoyu krapkoyu ANSI SIGKILL Neperehoplyuvanij signal zavershennya POSIX SIGBUS Pomilka shini 4 2 BSD SIGSEGV Porushennya segmentaciyi ANSI SIGSYS Nepravilnij argument u sistemnomu vikliku 4 2 BSD SIGPIPE Porushennya kanalu POSIX SIGALRM Zavershennya chasu POSIX SIGTERM Zavershennya ANSI Koristuvackij signal 1 POSIX Koristuvackij signal 2 POSIX SIGCHLD Zmina statusu dochirnogo procesu POSIX SIGCLD Analogichno SIGCHLD System V SIGPWR Perezapusk pislya problemi iz zhivlennyam System V SIGXCPU Obmezhennya procesornogo chasu POSIXPosilannyasignal h 25 zhovtnya 2009 u Wayback Machine na