signal.h
Заголовні файли C |
---|
signal.h — заголовний файл стандартної бібліотеки мови програмування С, що використовується для зазначення того, як програма обробляє сигнали під час свого виконання. Сигнал може сповіщати про деяке відхилення від очікуваної поведінки програми (як, наприклад, ділення на нуль) або про деякі асинхронні події, що відбулися поза програмою (наприклад, якщо хтось натиснув кнопку переривання програми на клавіатурі).
Сигнал може генеруватися при виклику RAISE (посилає сигнал поточному процесові) або Kill (посилає сигнал будь-якого процесу). Кожна реалізація визначає якийсь сигнал, що генерує і визначає їх генерацію. Реалізація може визначати сигнали, які відрізняються від перерахованих тут. Стандартний заголовний файл <signal.h> може визначати додаткові макроси з іменами, які починаються з SIG, для вказання значення цих додаткових сигналів. Усі подібні значення є цілими константні виразами >= 0.
Можна вказувати обробник сигналу для усіх сигналів, окрім двох (SIGKILL та SIGSTOP не можуть бути перехоплені, блоковані або проігноровані). Обробник сигналу — функція, яка направляє виклики оточенню, коли приймає відповідний сигнал. Цільове оточення призупиняє виконання програми, доки обробник сигналу не поверне значення або викличе перехід (longjmp). Для максимальної переносимості, асинхронний обробник сигналу повинен:
- здійснювати (успішний) виклик сигналу функції
- присвоювати значення об'єктів з типом «непов'язана змінна» sig_atomic_t
- повертати управління
Якщо сигнал сповіщає про помилку всередині програми (а сигнал не асинхронний), то обробник сигналу може завешить її виконання, викликавши Abort, Exit або longjmp.
int raise(int sig)
. Штучно викликає сигнал.
psignal(int sig, const char *s)
, виводить на stderr рядок, який містить номер сигналу. Застосовується у 4.3BSD, Solaris та Linux, однак, не вказаний у стандартах POSIX та SUS.
На тих же системах string.h містить нестандартний strsignal(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 | |
SIGINT | Переривання | ANSI | |
SIGQUIT | Вихід | POSIX | |
SIGILL | Недопустима інструкція | ANSI | |
SIGABRT | Самозупинка | ANSI | |
SIGTRAP | Перехоплення події | POSIX | |
SIGIOT | Перехоплення вводу-виводу | 4.2 BSD | |
SIGEMT | Перехоплення емуляції | 4.2 BSD | |
SIGFPE | Виняток з плаваючою крапкою | ANSI | |
SIGKILL | Неперехоплюваний сигнал завершення | POSIX | |
SIGBUS | Помилка шини | 4.2 BSD | |
SIGSEGV | Порушення сегментації | ANSI | |
SIGSYS | Неправильний аргумент у системному виклику | 4.2 BSD | |
SIGPIPE | Порушення каналу | POSIX | |
SIGALRM | Завершення часу | POSIX | |
SIGTERM | Завершення | ANSI | |
SIGUSR1 | Користувацький сигнал 1 | POSIX | |
SIGUSR2 | Користувацький сигнал 2 | POSIX | |
SIGCHLD | Зміна статусу дочірнього процесу | POSIX | |
SIGCLD | Аналогічно SIGCHLD | System V | |
SIGPWR | Перезапуск після проблеми із живленням | System V | |
SIGXCPU | Обмеження процесорного часу | POSIX |
- signal.h [Архівовано 25 жовтня 2009 у Wayback Machine.] на OpenGroup
- Посібник по signal.h на dinkumware