Jel - Linux / Unix parancs

A Linux támogatja mind a POSIX megbízható jeleket (a továbbiakban: "szabványos jelek") és POSIX valós idejű jeleket.

Szabványos jelek

A Linux az alább felsorolt ​​szabványos jeleket támogatja. Több jelszám az architektúra függvénye, amint az az "Érték" oszlopban látható. (Ha három értéket adunk meg, az első általában az alfa és a sparc esetében érvényes, az i386, a ppc és a sh pedig a középső, az utolsó a mips esetében.

A - jelzi, hogy hiányzik egy jel a megfelelő architektúrán.)

A táblázat "Művelet" oszlopában szereplő bejegyzések a következőképpen határozzák meg a jelre vonatkozó alapértelmezett műveletet:

kifejezés

Az alapértelmezett művelet a folyamat leállítása.

Ign

Az alapértelmezett művelet az, hogy figyelmen kívül hagyja a jelet.

Mag

Az alapértelmezett művelet a folyamat lebontása és a dump core.

Állj meg

Az alapértelmezett művelet a folyamat leállítása.

Először az eredeti POSIX.1 szabványban leírt jeleket.

Jel Érték Akció Megjegyzés
vagy az ellenőrzési folyamat halála
SIGINT 2 kifejezés Megszakítás a billentyűzetről
SIGQUIT 3 Mag Lépjen ki a billentyűzetről
SIGILL 4 Mag Illegális utasítás
SIGABRT 6 Mag Megszakítsák a jelzést abortól (3)
SIGFPE 8 Mag Lebegőpontos kivétel
SIGKILL 9 kifejezés Ölj meg
SIGSEGV 11 Mag Érvénytelen memória-hivatkozás
SIGPIPE 13 kifejezés Törött cső: írjon csőre olvasók nélkül
SIGALRM 14 kifejezés Időzítő jel riasztásból (2)
SIGTERM 15 kifejezés Megszakítási jel
SIGUSR1 30,10,16 kifejezés Felhasználó által definiált jel 1
SIGUSR2 31,12,17 kifejezés Felhasználó által definiált jel 2
SIGCHLD 20,17,18 Ign A gyermek megállt vagy megszűnt
SIGCONT 19,18,25 Folytassa ha leállt
SIGSTOP 17,19,23 Állj meg Állítsa le a folyamatot
SIGTSTP 18,20,24 Állj meg Lépjen be a tty
SIGTTIN 21,21,26 Állj meg tty bemenet a háttérfolyamathoz
SIGTTOU 22,22,27 Állj meg tty output a háttérfolyamathoz

A SIGKILL és a SIGSTOP jeleket nem lehet elkapni, blokkolni vagy figyelmen kívül hagyni.

Ezután a jeleket nem a POSIX.1 szabványban, hanem a SUSv2 és a SUSv3 / POSIX 1003.1-2001-ben írják le.

Jel Érték Akció Megjegyzés
SIGPOLL kifejezés Pollable esemény (Sys V). A SIGIO szinonimája
SIGPROF 27,27,29 kifejezés A profilozási időzítő lejárt
SIGSYS 12, -, 12 Mag Rossz feladat (SVID)
SIGTRAP 5 Mag Trace / breakpoint csapda
SIGURG 16,23,21 Ign Sürgős állapot az aljzaton (4.2 BSD)
SIGVTALRM 26,26,28 kifejezés Virtuális ébresztőóra (4.2 BSD)
SIGXCPU 24,24,30 Mag CPU időkorlát túllépte (4.2 BSD)
SIGXFSZ 25,25,31 Mag A fájlméretkorlát túllépte (4.2 BSD)

A SIGSYS , a SIGXCPU , a SIGXFSZ és (a SPARC és a MIPS-n kívüli architektúrák esetében) a Linux 2.2-hez képest a SIGBUS alapértelmezett magatartása a folyamat lezárása ( magtömlő nélkül). (Néhány más Unices esetében a SIGXCPU és a SIGXFSZ alapértelmezett művelete az eljárás lezárása a core dump nélkül.) A Linux 2.4 megfelel a POSIX 1003.1-2001 követelményeknek ezekhez a jelekhez, és lezárja a folyamatot egy alapvető dumpel.

Következő különböző egyéb jelek.

Jel Érték Akció Megjegyzés
SIGEMT 7, -, 7 kifejezés
SIGSTKFLT - 16, - kifejezés Stack hiba a koprocesszoron (fel nem használt)
SIGIO 23,29,22 kifejezés I / O most lehetséges (4.2 BSD)
SIGCLD -, -, 18 Ign A SIGCHLD szinonimája
SIGPWR 29,30,19 kifejezés Áramkimaradás (V rendszer)
SIGINFO 29, -, - A SIGPWR szinonimája
SIGLOST -, -, - kifejezés A fájlzár elveszett
SIGWINCH 28,28,20 Ign Az ablak átméretezése (4.3 BSD, Sun)
SIGUNUSED - 31, - kifejezés Fel nem használt jel (SIGSYS lesz)

(A 29. jel a SIGINFO / SIGPWR egy alfa, de a SIGLOST egy sparc-on.)

A SIGEMT nincs megadva a POSIX 1003.1-2001 verziónál, de a legtöbb más Unices esetében mindig jelenik meg, ahol az alapértelmezett művelet jellemzően a folyamatot coredump-el zárja.

A SIGPWR (amely a POSIX 1003.1-2001-ben nincs megadva) alapértelmezés szerint általában figyelmen kívül hagyja azokat a többi Unices-et, ahol megjelenik.

A SIGIO (amely a POSIX 1003.1-2001-ben nem szerepel) alapértelmezés szerint több más Unices-et figyelmen kívül hagy.

Valós idejű jelek

A Linux valós idejű jeleket támogat a POSIX.4 valós idejű kiterjesztésekben (és most a POSIX 1003.1-2001 verziójában) eredetileg meghatározott módon. A Linux 32 valós idejű jelet támogat, 32-ből ( SIGRTMIN ) 63-ra ( SIGRTMAX ). (A programoknak mindig a SIGRTMIN + n jelölést használó valós idejű jelekre kell vonatkozniuk, mivel a valós idejű jelszámok tartománya eltér a Unices-tól.)

A standard jelekkel ellentétben a valós idejű jeleknek nincsenek előre meghatározott jelentéseik: a valós idejű jelek teljes készlete alkalmazható meghatározott célokra. (Ne feledje azonban, hogy a LinuxThreads implementációja az első három valós idejű jelet használja.)

A nem kezelt valós idejű jel alapértelmezett művelete a vételi folyamat befejezése.

A valós idejű jeleket az alábbiak különböztetik meg:

  1. Több valós idejű jel véletlen sorrendbe állítható. Ezzel szemben, ha egy szabványos jel több példányát kiadják, amíg a jel jelenleg blokkolódik, akkor csak egy példány kerül várakozásra.
  2. Ha a jelzés a sigqueue (2) használatával történik , egy kísérőérték (akár egész szám, akár mutató) küldhető a jelzéssel. Ha a fogadó folyamat a SA_SIGACTION jelzővel (2) a jelzéshez hozzárendeli a jelet, akkor az adatokat a kezelő által második argumentumként átadott siginfo_t struktúra si_value mezőjében szerezheti be. Ezen túlmenően a struktúra si_pid és si_uid mezői felhasználhatók a jel PID és valós felhasználói azonosítójának megszerzésére.
  3. A valós idejű jelek garantált sorrendben érkeznek. Az azonos típusú többszörös valós idejű jelek abban az sorrendben kerülnek kiszállításra, amelyet elküldtek. Ha egy folyamathoz különböző valós idejű jeleket küldünk, azok a legalacsonyabb számmal kezdődő jelet indítják. (Vagyis az alacsony számozású jelek elsőbbséget élveznek.)

Ha mind a szabványos, mind a valós idejű jelek folyamatban vannak, a POSIX elhagyja azt, amit először adtak meg. A Linux, mint sok más implementáció, ebben az esetben a szabványos jeleket is előnyben részesít.

A POSIX szerint a végrehajtásnak legalább _POSIX_SIGQUEUE_MAX (32) valós idejű jeleket kell engedélyeznie egy folyamathoz. Azonban, ahelyett, hogy egy per-processz limitet helyezne el, a Linux rendszer-szintű határt szab a sorban álló valós idejű jelek számának minden folyamatra.

Ez a határérték megtekinthető (és jogosultsággal) a / proc / sys / kernel / rtsig-max fájlon keresztül. Egy kapcsolódó fájl, a / proc / sys / kernel / rtsig-max , arra használható, hogy megtudja, hány valós idejű jelet állítottak sorba.

MEGFELELŐEN

POSIX.1

Fontos: Az ember paranccsal ( % man ) tekintse meg, hogyan használják a parancsot az adott számítógépen.