Сигнал - команда за Linux / Unix

Linux ги поддржува сигурносните сигнали POSIX (во понатамошниот текст "стандардни сигнали") и POSIX сигналите во реално време.

Стандардни сигнали

Linux ги поддржува стандардните сигнали наведени подолу. Неколку сигнални броеви се зависни од архитектурата, како што е наведено во колоната "Вредност". (Каде се дадени три вредности, првиот е обично валиден за алфа и спарк, средината за i386, ppc и sh, а последната за mips.

A - означува дека сигналот е отсутен во соодветната архитектура.)

Внесот во колоната "Акција" на табелата го одредува стандардното дејство за сигналот, и тоа:

Термин

Стандардната акција е да го прекине процесот.

Игн

Стандардната акција е да го игнорира сигналот.

Core

Стандардната акција е да го прекине процесот и депонираното јадро.

Стоп

Стандардната акција е да го запрете процесот.

Прво сигналите опишани во оригиналниот POSIX.1 стандард.

Сигнал Вредност Акција Коментар
или смрт на контролниот процес
SIGINT 2 Термин Прекини од тастатурата
SIGQUIT 3 Core Напушти од тастатура
SIGILL 4 Core Нелегално упатство
SIGABRT 6 Core Прекини сигнал од прекин (3)
SIGFPE 8 Core Исклучок на пловечки точки
SIGKILL 9 Термин Симнете го сигналот
SIGSEGV 11 Core Неважечка референца за меморија
SIGPIPE 13 Термин Скршена цевка: запишете на цевка без читатели
SIGALRM 14 Термин Сигнал за тајмер од аларм (2)
SIGTERM 15 Термин Прекинувачки сигнал
SIGUSR1 30,10,16 Термин Кориснички дефиниран сигнал 1
SIGUSR2 31,12,17 Термин Кориснички дефиниран сигнал 2
SIGCHLD 20,17,18 Игн Детето застанува или прекинува
SIGCONT 19,18,25 Продолжи ако запре
SIGSTOP 17,19,23 Стоп Стоп за процесот
SIGTSTP 18,20,24 Стоп Стоп внесе во TTY
SIGTTIN 21,21,26 Стоп tty влез за позадина процес
SIGTTOU 22,22,27 Стоп tty излез за позадина процес

Сигналите SIGKILL и SIGSTOP не можат да бидат фатени, блокирани или игнорирани.

Следните сигнали не се во стандардот POSIX.1, туку се опишани во SUSv2 и SUSv3 / POSIX 1003.1-2001.

Сигнал Вредност Акција Коментар
SIGPOLL Термин Настанот за загадување (Sys V). Синоним на СИГИО
SIGPROF 27,27,29 Термин Профилот за тајмер е истечен
SIGSYS 12, -, 12 Core Лош аргумент за рутина (SVID)
SIGTRAP 5 Core Стапица за трага / точка на прекин
SIGURG 16,23,21 Игн Итна состојба на приклучокот (4.2 BSD)
SIGVTALRM 26,26,28 Термин Виртуелен будилник (4.2 BSD)
SIGXCPU 24,24,30 Core Пречекорен временски рок на процесорот (4,2 BSD)
SIGXFSZ 25,25,31 Core Пречекорување на големината на датотеката е надминато (4,2 BSD)

До и вклучувајќи го и Линукс 2.2, стандардното однесување за SIGSYS , SIGXCPU , SIGXFSZ и (за архитектури различни од SPARC и MIPS) SIGBUS требаше да го прекине процесот (без депонија на јадрото). (Во некои други унци, стандардното дејство за SIGXCPU и SIGXFSZ е да го прекине процесот без депонија на јадрото.) Linux 2.4 е усогласен со барањата POSIX 1003.1-2001 за овие сигнали, со што го завршува процесот со депонија од јадрото.

Следи разни други сигнали.

Сигнал Вредност Акција Коментар
SIGEMT 7, -, 7 Термин
SIGSTKFLT -, 16, - Термин Дефект на магацинот на копроцесорот (неискористен)
SIGIO 23,29,22 Термин I / O сега е можно (4,2 BSD)
SIGCLD -, -, 18 Игн Синоним за SIGCHLD
SIGPWR 29,30,19 Термин Напојување со енергија (систем V)
SIGINFO 29, -, - Синоним за SIGPWR
СИГЛОСТ -, -, - Термин Датотеката за заклучување ќе се
SIGWINCH 28,28,20 Игн Сигнал за промена на прозорецот (4.3 BSD, Сонце)
SIGUNUSED -, 31, - Термин Неискористен сигнал (ќе биде SIGSYS)

(Сигналот 29 е SIGINFO / SIGPWR на алфа, но SIGLOST на спарк .)

SIGEMT не е наведен во POSIX 1003.1-2001, но никогаш не се појавува на повеќето други Unices, каде што нејзината стандардна акција обично е да го прекине процесот со депонија од јадрото.

SIGPWR (што не е специфицирано во POSIX 1003.1-2001) обично е игнорирано по стандард на оние други Unices каде што се појавува.

SIGIO (што не е специфицирано во POSIX 1003.1-2001) по правило е игнорирано на неколку други Уникс.

Сигнали во реално време

Линукс поддржува сигнали во реално време како што првично беа дефинирани во POSIX.4 екстензии во реално време (и сега се вклучени во POSIX 1003.1-2001). Linux поддржува 32 сигнали во реално време, нумерирани од 32 ( SIGRTMIN ) до 63 ( SIGRTMAX ). (Програмите секогаш треба да се однесуваат на сигнали во реално време со користење на ознака SIGRTMIN + n, бидејќи опсегот на броеви на сигнали во реално време варира во Уникс.)

За разлика од стандардните сигнали, сигналите во реално време немаат предефинирано значење: целиот сет на сигнали во реално време може да се користи за дефинирани апликации. (Забележете дека имплементацијата на LinuxThreads ги користи првите три сигнали во реално време.)

Стандардното дејство за непоканет сигнал во реално време е да го прекине процесот на примање.

Во реално време сигнали се одликува со следново:

  1. Повеќекратни инстанци на сигнали во реално време може да бидат поставени во ред. Спротивно на тоа, ако се испорачаат повеќе инстанци на стандарден сигнал додека тој сигнал е блокиран, тогаш само една инстанца е ставена во ред.
  2. Ако сигналот се испраќа со помош на sigqueue (2), придружната вредност (или цел број или покажувач) може да се испрати со сигналот. Ако процесот на примање воспоставува управувач за овој сигнал користејќи го знакот SA_SIGACTION до sigaction (2), тогаш тој може да ги добие овие податоци преку полето si_value на структурата siginfo_t што се пренесува како втор аргумент на управувачот. Понатаму, полето si_pid и si_uid од оваа структура може да се користи за добивање на PID и вистински кориснички ID на процесот што го испраќа сигналот.
  3. Сигналите во реално време се испорачуваат со гарантиран редослед. Повеќекратни сигнали во реално време од ист тип се доставуваат по редоследот што го испраќаат. Доколку се испраќаат различни сигнали во реално време на процес, тие се испорачуваат почнувајќи од сигналот со најниско нумериран број. (Односно, сигналите со низок број имаат највисок приоритет.)

Доколку се очекуваат и стандардни сигнали и во реално време за процес, POSIX го остава неодредено, што се испорачува прво. Linux, како и многу други имплементации, дава приоритет на стандардни сигнали во овој случај.

Според POSIX, имплементацијата треба да овозможи барем _POSIX_SIGQUEUE_MAX (32) сигналите во реално време да бидат ставени во ред во еден процес. Сепак, наместо да поставува ограничување по процес, Линукс наметнува системско ограничување на бројот на редоследни сигнали во реално време за сите процеси.

Ова ограничување може да се прегледа (и со привилегија) преку датотеката / proc / sys / kernel / rtsig-max . Поврзаната датотека, / proc / sys / kernel / rtsig-max , може да се користи за да дознае колку сигнали во реално време се во ред во редица.

СОВРШУВАЊЕ НА

POSIX.1

Важно: Користете ја командата за човекот ( % man ) за да видите како се користи командата на вашиот компјутер.