Топ питань
Часова шкала
Чат
Перспективи

Signal.h

З Вікіпедії, вільної енциклопедії

Remove ads

signal.hзаголовний файл стандартної бібліотеки мови програмування С, що використовується для зазначення того, як програма обробляє сигнали під час свого виконання. Сигнал може сповіщати про деяке відхилення від очікуваної поведінки програми (як, наприклад, ділення на нуль) або про деякі асинхронні події, що відбулися поза програмою (наприклад, якщо хтось натиснув кнопку переривання програми на клавіатурі).

Сигнал може генеруватися при виклику RAISE (посилає сигнал поточному процесові) або Kill (посилає сигнал будь-якого процесу). Кожна реалізація визначає якийсь сигнал, що генерує і визначає їх генерацію. Реалізація може визначати сигнали, які відрізняються від перерахованих тут. Стандартний заголовний файл <signal.h> може визначати додаткові макроси з іменами, які починаються з SIG, для вказання значення цих додаткових сигналів. Усі подібні значення є цілими константні виразами >= 0.

Можна вказувати обробник сигналу для усіх сигналів, окрім двох (SIGKILL та SIGSTOP не можуть бути перехоплені, блоковані або проігноровані). Обробник сигналу — функція, яка направляє виклики оточенню, коли приймає відповідний сигнал. Цільове оточення призупиняє виконання програми, доки обробник сигналу не поверне значення або викличе перехід (longjmp). Для максимальної переносимості, асинхронний обробник сигналу повинен:

  • здійснювати (успішний) виклик сигналу функції
  • присвоювати значення об'єктів з типом «непов'язана змінна» sig_atomic_t
  • повертати управління

Якщо сигнал сповіщає про помилку всередині програми (а сигнал не асинхронний), то обробник сигналу може завешить її виконання, викликавши Abort, Exit або longjmp.

Remove ads

Методи

  • 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 може завершуватись виконанням операції виклику або викликом функції самозавершення, виводу або переходу.

Remove ads

Члени-типи

typedef i-type sig_atomic_t

Члени-макроси

  • SIG_DFL — Використовується для вказання способу обробки сигналів за замовчуванням.
  • SIG_IGN — Використовується для ігнорування сигналу.
  • SIG_ERR — Код помилки.

Члени-константи

Більше інформації Константа, Значення ...
Remove ads

Посилання

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads