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 Переривання ANSISIGQUIT Вихід POSIXSIGILL Недопустима інструкція ANSISIGABRT Самозупинка ANSISIGTRAP Перехоплення події POSIX SIGIOT Перехоплення вводу-виводу 4.2 BSD Перехоплення емуляції 4.2 BSDSIGFPE Виняткова ситуація обчислення з рухомою комою ANSISIGKILL Неперехоплюваний сигнал завершення POSIXSIGBUS Помилка шини 4.2 BSDSIGSEGV Порушення сегментації ANSISIGSYS Неправильний аргумент у системному виклику 4.2 BSDSIGPIPE Порушення каналу POSIXSIGALRM Завершення часу POSIXSIGTERM Завершення ANSISIGUSR1 Користувацький сигнал 1 POSIXSIGUSR2 Користувацький сигнал 2 POSIXSIGCHLD Зміна статусу дочірнього процесу POSIX SIGCLD Аналогічно SIGCHLD System VSIGPWR Перезапуск після проблеми із живленням System VSIGXCPU Обмеження процесорного часу POSIX
Посилання signal.h на OpenGroup Посібник по signal.h на dinkumware