Linux падтрымлівае як POSIX надзейныя сігналы (у далейшым «стандартныя сігналы») і POSIX ў рэальным маштабе часу сігналы.
стандартныя сігналы
Linux падтрымлівае стандартныя сігналы , пералічаныя ніжэй. Некалькі нумары сігналаў залежаць архітэктура, як паказана ў калонцы «Value». (Там, дзе тры значэнні, то першае, як правіла, дзейнічае на альфа і СПАРК, сярэдні для i386, кантэкстная і ш, а апошні для працаёмкасці.
А - азначае, што сігнал адсутнічае на адпаведнай архітэктуры).
Запісы ў слупку «Дзеянне» табліцы ўказаць дзеянне па змаўчанні для сігналу, наступным чынам:
тэрмін
Дзеянне па змаўчанні для завяршэння працэсу.
Ign
Дзеянне па змаўчанні ігнараваць сігнал.
ядро
Дзеянне па змаўчанні для завяршэння працэсу і дампа ядра.
спыніць
Дзеянне па змаўчанні, каб спыніць працэс.
Па-першае сігналаў апісаны ў першапачатковым стандарце POSIX.1.
сігнал | значэнне | дзеянне | каментар |
або смерць кантролю працэсу | |||
SIGINT | 2 | тэрмін | Перапыненне з клавіятуры |
SIGQUIT | 3 | ядро | Выхад з клавіятуры |
SIGILL | 4 | ядро | забароненая каманда |
SIGABRT | 6 | ядро | Перапыніць сігнал перапынення (3) |
SIGFPE | 8 | ядро | выключэнне з якая плавае кропкай |
SIGKILL | 9 | тэрмін | забі сігнал |
SIGSEGV | 11 | ядро | Недапушчальнае зварот да памяці |
SIGPIPE | 13 | тэрмін | Зламаная труба: напісаць трубы, без чытачоў |
SIGALRM | 14 | тэрмін | Таймер сігнал трывогі (2) |
SIGTERM | 15 | тэрмін | сігнал Скасаванне |
SIGUSR1 | 30,10,16 | тэрмін | Вызначаны карыстальнікам сігнал 1 |
SIGUSR2 | 31,12,17 | тэрмін | Вызначаны карыстальнікам сігнал 2 |
SIGCHLD | 20,17,18 | Ign | Дзіця спынены або спынены |
SIGCONT | 19,18,25 | Працягнуць, калі спыненая | |
SIGSTOP | 17,19,23 | спыніць | спыніць працэс |
SIGTSTP | 18,20,24 | спыніць | Стоп набраныя на тэлетайп |
SIGTTIN | 21,21,26 | спыніць | тэрмінал ўводу для фонавага працэсу |
SIGTTOU | 22,22,27 | спыніць | Выхадны тэрмінал для фонавага працэсу |
Сігналы SIGKILL і SIGSTOP не могуць быць перахопленыя, заблякаваны або ігнаруецца.
Далей сігналы не ў стандарце POSIX.1, але апісаныя ў SUSv2 і SUSv3 / POSIX 1003.1-2001.
сігнал | значэнне | дзеянне | каментар |
SIGPOLL | тэрмін | Pollable падзея (Sys V). сінонім SIGIO | |
SIGPROF | 27,27,29 | тэрмін | Прафіляванне таймера скончыўся |
SIGSYS | 12, -, 12 | ядро | Дрэнны аргумент руціна (SVID) |
SIGTRAP | 5 | ядро | Трасіроўка / пастка пункту перапынення |
SIGURG | 16,23,21 | Ign | Тэрміновае ўмова на гняздо (4.2 BSD) |
SIGVTALRM | 26,26,28 | тэрмін | Віртуальны будзільнік (4,2 BSD) |
SIGXCPU | 24,24,30 | ядро | Абмежаванне працэсарнага часу перавышаны (4.2 BSD) |
SIGXFSZ | 25,25,31 | ядро | Гранічны памер файла перавышана (4,2 BSD) |
Да і уключаючы Linux 2.2, паводзіны па змаўчанні для SIGSYS, SIGXCPU, SIGXFSZ, і (на іншых архітэктурах , чым SPARC і MIPS) SIGBUS быў завяршыць працэс (без дампа ядра). (На некаторых іншых UNIX'ах дзеянне па змаўчанні для SIGXCPU і SIGXFSZ з'яўляецца завяршэнне працэсу без дампа ядра.) Linux 2.4 адпавядае патрабаванням POSIX 1003.1-2001 для гэтых сігналаў, спыненне працэсу з дамп памяці.
Наступныя розныя іншыя сігналы.
сігнал | значэнне | дзеянне | каментар |
SIGEMT | 7, -, 7 | тэрмін | |
SIGSTKFLT | - 16, - | тэрмін | памылка Stack на супрацэсара (не выкарыстоўваецца) |
SIGIO | 23,29,22 | тэрмін | I / O зараз магчыма (4.2 BSD) |
SIGCLD | -, -, 18 | Ign | Сінонім для SIGCHLD |
SIGPWR | 29,30,19 | тэрмін | Збой харчавання (System V) |
SIGINFO | 29, -, - | сінонім SIGPWR | |
SIGLOST | -, -, - | тэрмін | Блакаванне файла страцілі |
SIGWINCH | 28,28,20 | Ign | Акно змены памеру сігналу (4,3 BSD, Sun) |
SIGUNUSED | - 31, - | тэрмін | Нявыкарыстаны сігнал (будзе SIGSYS) |
(Сігнал 29 SIGINFO / SIGPWR на альфа , але SIGLOST на SPARC.)
SIGEMT не паказаная ў POSIX 1003.1-2001, але ў большасці іншых UNIX'ах, дзе яго дзеянне па змаўчанні з'яўляецца , як правіла , каб завяршыць працэс з дамп памяці з'яўляецца Neverthless.
SIGPWR (які не пазначаны ў POSIX 1003.1-2001) , як правіла , ігнаруецца па змаўчанні на тых іншых UNIX'ах , дзе ён з'яўляецца.
SIGIO (які не пазначаны ў POSIX 1003.1-2001) ігнаруецца па змаўчанні на некалькіх іншых UNIX'ах.
Сігналы рэальнага часу
Linux падтрымлівае сігналы ў рэальным маштабе часу , як гэта першапачаткова вызначаны ў пашырэннях рэальнага часу POSIX.4 (і цяпер уключаны ў POSIX 1003.1-2001). Linux , падтрымлівае 32 у рэальным маштабе часу сігналы, пронумерованные ад 32 (SIGRTMIN) да 63 (SIGRTMAX). (Праграмы заўсёды ідуць у рэжыме рэальнага часу з выкарыстаннем сігналамі абазначэння SIGRTMIN + п, бо дыяпазон лікаў сігналу ў рэжыме рэальнага часу змяняецца па юнікс.)
У адрозненне ад стандартных сігналаў, у рэальным маштабе часу сігналы не маюць загадзя вызначаныя значэнні: увесь набор сігналаў рэальнага часу могуць быць выкарыстаны для прымянення пэўных мэтаў. (Аднак варта адзначыць, што рэалізацыя LinuxThreads выкарыстоўвае першыя тры ў рэальным маштабе часу сігналы.)
Дзеянне па змаўчанні для неапрацаванага сігналу ў рэальным часе, каб завяршыць працэс прыёму.
Сігналы рэальнага часу адрозніваюцца ў наступным:
- Некалькі асобнікаў сігналаў рэальнага часу могуць быць пастаўлены ў чаргу. У супрацьлегласць гэтаму, калі некалькі асобнікаў стандартнага сігналу паступаюць у той час як гэты сігнал у дадзены момант заблякаваны, то толькі адзін асобнік знаходзіцца ў чарзе.
- Калі сігнал перадаецца з выкарыстаннем sigqueue (2), спадарожнае значэнне (цэлы лік або паказальнік) можа быць пасланы з сігналам. Калі які прымае працэс ўсталёўвае апрацоўшчык для гэтага сігналу , выкарыстоўваючы сцяг sa_sigaction да sigaction (2) , то ён можа атрымаць гэтыя дадзеныя праз si_value поля структуры siginfo_t , перададзеную ў якасці другога аргументу апрацоўшчыка. Акрамя таго, si_pid і si_uid поля гэтай структуры могуць быць выкарыстаны для атрымання PID і рэальны ідэнтыфікатар карыстальніка працэсу , які пасылае сігнал.
- сігналы ў рэжыме рэальнага часу паступае ў гарантаванай парадку. Некалькі рэальнага часу сігналы аднаго і таго ж тыпу пастаўляюцца ў парадку, яны былі адпраўленыя. Калі розныя сігналы ў рэальным маштабе часу пасылаюцца да працэсу, яны будуць дастаўлены пачынаючы з найменшай нумарам сігналу. (То бок, нізкія пранумараваных сігналы маюць найвышэйшы прыярытэт.)
Калі абодва стандартных і ў рэальны маштабе час сігналаў у чаканні на працягу працэсу, POSIX пакідае нявызначаным, які дастаўляецца ў першую чаргу. Linux, як і многія іншыя рэалізацыі, аддае прыярытэт стандартных сігналаў у гэтым выпадку.
У адпаведнасці з POSIX, рэалізацыя павінна дазволіць, па меншай меры _POSIX_SIGQUEUE_MAX (32) у рэжыме рэальнага часу сігналы, якія будуць пастаўлены ў чаргу да працэсу. Аднак замест таго, каб змясціць абмежаванне на працэс, Linux, накладвае сістэмны ліміт на колькасць пастаўленых у чаргу сігналаў рэальнага часу для ўсіх працэсаў.
Гэты мяжа можна разглядаць (і прывілей) зменена праз / Proc / сістэмы / ядро / rtsig-макс файл. Звязаны файл, / Proc / SYS / ядро / rtsig-макс, можна выкарыстоўваць , каб даведацца, колькі сігналаў у рэальным маштабе часу ў цяперашні час у чарзе.
Адпаведнасць
POSIX.1
Важна: Выкарыстоўвайце каманду чалавека (%) чалавек , каб паглядзець , як каманда выкарыстоўваецца на вашым канкрэтным кампутары.