Signal - Linux / Unix Kommando

Linux stipet sawol POSIX betroubere sinjalen (hjirnei "standert sinjalen") en POSIX-eigners.

Standert sinjalen

Linux stipet de hjirboppe neamde standertignalen. Ferskillige sinne nûmers binne arsjitektuerôfhinklik, lykas yn 'e "Value"-kolom oanjûn. (Wêr't trije wearden oanbean wurde, is de earste normaal jildich foar alpha en sparc, de midden foar i386, ppc en sh, en de lêste foar mips.

A - betsjuttet dat in sinjaal ûntbrekt is op 'e oerienkommende arsjitektuer.)

De yngongen yn 'e kategory "Aktive" kolom fan' e tabel befetsje de standertaksje foar it sinjaal as folgjend:

Term

Standert aksje is om it proses te stopjen.

Ign

Standert aksje is om it sinjaal te bewarjen.

Kearn

Standert aksje is om it proses- en dump-kearn te begjinnen.

Ophâlde

Standert aksje is om it proses te stopjen.

Earst wurde de sinjalen beskreaun yn 'e orizjinele POSIX.1 standert.

Sinjaal Wearde Aksje Comment
of de dea fan it kontrolearjen fan proses
SIGINT 2 Term Ynterfal fan it toetseboerd
SIGQUIT 3 Kearn Fuortsmite fan it toetseboerd
SIGILL 4 Kearn Unjildige ynstruksje
SIGABRT 6 Kearn Abonnees sinjaal fan ôfbrutsen (3)
SIGFPE 8 Kearn Floating point exception
SIGKILL 9 Term Kill sinjaal
SIGSEGV 11 Kearn Unjildich memoryadres
SIGPIPE 13 Term Broken pipe: skriuwe nei pipe mei gjin lêzers
SIGALRM 14 Term Timer-sinjaal fan alarm (2)
SIGTERM 15 Term Terminalsignale
SIGUSR1 30,10,16 Term Brûker foar bepaalde sinjaal 1
SIGUSR2 31,12,17 Term Brûker foar bepaalde sinjaal 2
SIGCHLD 20,17,18 Ign Bern stopp of ôfsluten
SIGCONT 19,18,25 Trochgean as it stoppe is
SIGSTOP 17,19,23 Ophâlde Stopproses
SIGTSTP 18,20,24 Ophâlde Stopje typ op tty
SIGTTIN 21,21,26 Ophâlde tty ynput foar eftergrûnproses
SIGTTOU 22,22,27 Ophâlde tty-útfier foar eftergrûnproses

De sinjalen SIGKILL en SIGSTOP kinne net fêst, blokkearre, of net bewarre wurde.

Neidat de sinjalen net yn it POSIX.1 standert mar beskreaun binne yn SUSv2 en SUSv3 / POSIX 1003.1-2001.

Sinjaal Wearde Aksje Comment
SIGPOLL Term Stoflike barren (Sys V). Synonym fan SIGIO
SIGPROF 27,27,29 Term De timearing fan profilearjen is ferrûn
SIGSYS 12, -, 12 Kearn Bad argumint foar routine (SVID)
SIGTRAP 5 Kearn Trace / breakpoint trap
SIGURG 16,23,21 Ign Drokte betingst op socket (4.2 BSD)
SIGVTALRM 26,26,28 Term Virtual alarmklok (4.2 BSD)
SIGXCPU 24,24,30 Kearn CPU-tiidlimyt grutter (4.2 BSD)
SIGXFSZ 25,25,31 Kearn Triemgrutte beheind oerienkomt (4.2 BSD)

Oant en ynklusyf Linux 2.2, it standertgedrach foar SIGSYS , SIGXCPU , SIGXFSZ , en (op oare arsjitekten as SPARC en MIPS) SIGBUS moast it proses ôfslute (sûnder kearndump ). (Op guon oare Uni's is it standertaksje foar SIGXCPU en SIGXFSZ it proses te stopjen sûnder in kearndump .) Linux 2.4 konformearret mei de easken fan POSIX 1003.1-2001 foar dizze sinjalen, it ôfsluten fan it proses mei in core dump.

Folgje ferskate oare sinjalen.

Sinjaal Wearde Aksje Comment
SIGEMT 7, -, 7 Term
SIGSTKFLT -, 16, - Term Stapfloei op coprozessor (net brûkte)
SIGIO 23,29,22 Term I / O kin no (4.2 BSD)
SIGCLD -, -, 18 Ign In synonym foar SIGCHLD
SIGPWR 29,30,19 Term Power failure (systeem V)
SIGINFO 29, -, - In synonym foar SIGPWR
SIGLOST -, -, - Term Triem ferpleatse ferlern
SIGWINCH 28,28,20 Ign Finstergrutte sesje (4.3 BSD, Sun)
SIGUNUSED -, 31, - Term Unbepaald sinjaal (sil SIGSYS wêze)

(Signal 29 is SIGINFO / SIGPWR op in alpha, mar SIGLOST op in sparc.)

SIGEMT is net oanjûn yn POSIX 1003.1-2001, mar neverthless ferskynt op de measte oare Uni's, wêrtroch syn standertaksje typysk it proses ôfslute mei in core dump.

SIGPWR (dy't net ynfierd is yn POSIX 1003.1-2001) wurdt normaal net trochgeand troch dizze oare Uniyen wêr't it ferskynt.

SIGIO (wat net spesifisearre is yn POSIX 1003.1-2001) wurdt troch standert op inkele oare Uniyen standert ignorearre.

Real-time-sinjalen

Linux stipet real-time-sinjalen as oarspronklik yn 'e POSIX.4-realisaasjegongingen definiearre (en no yn POSIX 1003.1-2001 opnaam). Linux stipet 32 ​​echt- timigensignalen , nûmere fan 32 ( SIGRTMIN ) oant 63 ( SIGRTMAX ). (Programma's moatte altyd referinsjes op echte-sinjalen brûke mei help fan notysje SIGRTMIN + n, omdat it berik fan eignersnûmeren ferskaft tusken Unices.)

Oars as standert sinjalen hawwe echte-sinjalen gjin foarôfgeande betsjuttingen: de folsleine set fan echte-sinjalen kin brûkt wurde foar tapassing fan tapassing. (Tink derom dat de ynfier fan LinuxThreads de earste trije real-time-sinjalen brûke.)

De standertaksje foar in net-behannele real-time-sinjaal is om it ûntfangende proses ôf te sluten.

Real-time-sinjalen ûnderskiede mei de neikommende:

  1. Meardere eksemplaren fan echt-timeline-sinjalen kinne wachtrigen wurde. Hjirtroch kinne as meardere eksimplaren fan in standert signale levere wurde, wylst it sinjaal op it stuit blokkearre wurdt, dan wurdt allinich ien eksimplaar wacht.
  2. As it sinjaal ferstjoerd wurdt mei sigqueue (2), kin in begeliedende wearde (sawol in inkel of in pointer) mei it sinjaal ferstjoere. As de ûntfangende proseduere in handler foar dit sinjaal brûke mei de flagge SA_SIGACTION foar sigraasje (2) dan kin dizze gegevens fia it si_value fjild fan 'e siginfo_t- struktuer krije dat it twadde argumint foar de handler trochjûn. Fierder kinne de gebieten fan si_pid en si_uid fan dizze struktuer brûkt wurde om de PID- en echte brûkerside fan it proses te krijen fan it sinjaal.
  3. Real-time-sinjalen wurde levere yn in garandearre oarder. Mearfâldige echt-timsignalen fan deselde type wurde levere yn 'e oarder dy't se stjoerd wurde. As ferskate echte-sinjale sinnen nei in proses stjoerd wurde, wurde se begûn mei it leechste nûmere sinjaal. (Ie, leech-nûmere sinjalen hawwe de heechste prioriteit.)

As beide standert- en eignere-sinjalen foar in proses oandien binne, lit POSIX it net oantsjutte dat earst levere wurdt. Linux, lykas in protte oare ymplementaasjes, jout prioriteit ta standert sinjalen yn dit gefal.

Neffens POSIX moat in útfiering op syn minst _POSIX_SIGQUEUE_MAX (32) eigners wêze om tagong te wêzen foar in proses. Om't er lykwols in per-proseslimite ynstelle, hat Linux in systeme-wide begryp op it tal wachtrige echte-sinjalen foar alle prosessen.

Dizze limyt kin besjoen wurde (en mei privileezje) feroare troch de triem / proc / sys / kernel / rtsig-max . In relatearre triem, / proc / sys / kernel / rtsig-max , kin brûkt wurde om te finen hoefolle echte sinjalen op 'e nij wachtsje.

CONFORMING TO

POSIX.1

Wichtich: Brûk de manbehearder ( % man ) om te sjen hoe't in kommando brûkt wurdt op jo bepaalde komputer.