Seinalea - Linux / Unix komandoa

Linuxek POSIX seinale fidagarriak (aurrerantzean "seinale estandarrak") eta POSIX denbora errealeko seinaleak onartzen ditu.

Seinale estandarrak

Linux behean zerrendatutako seinale estandarrak onartzen ditu. Hainbat seinale-zenbakiak arkitektura menpean daude, "Balio" zutabean adierazten den bezala. (Hiru balioak ematen direnean, lehenengoak alfa eta sparc balio du, erdiko bat i386, ppc eta sh-erako, eta mips-en azkenekoa.

A - adierazten du dagokion seinalea ez dagoela dagokion arkitekturan.)

Taulan "Ekintza" zutabean dauden sarrerak zehaztu seinalearen ekintza lehenetsia honela:

Epea

Jarduera lehenetsia prozesua amaitzea da.

IGN

Ekintza lehenetsia seinalea alde batetara utzi behar da.

Core

Akats lehenetsia prozesua amaitzean eta dump core da.

Gelditu

Akats lehenetsia prozesua gelditzea da.

Lehenengo POSIX.1 estandarraren arabera deskribatutako seinaleak.

Seinalea Balio Ekintza Iruzkina
edo kontrol-prozesuaren heriotza
SIGINT 2 Epea Teklatuaren etenaldia
SIGQUIT 3 Core Itzaletik teklatua
SIGILL 4 Core Instrukzio ilegala
SIGABRT 6 Core Abortatu abortuaren seinalea (3)
SIGFPE 8 Core Mugikorreko puntuen salbuespena
SIGKILL 9 Epea Kill seinalea
SIGSEGV 11 Core Memoria erreferentzia baliogabea
SIGPIPE 13 Epea Hoditeria hautsia: kanalizazioari ez irakurleei idaztea
SIGALRM 14 Epea Tenporizadoreen alarma seinalea (2)
SIGTERM 15 Epea Amaierako seinalea
SIGUSR1 30,10,16 Epea Erabiltzaile definitutako seinalea 1
SIGUSR2 31,12,17 Epea Erabiltzaile definitutako seinalea 2
SIGCHLD 20,17,18 IGN Haurra gelditu edo amaitu da
SIGCONT 19,18,25 Jarraitu gelditu bada
SIGSTOP 17,19,23 Gelditu Stop prozesua
SIGTSTP 18,20,24 Gelditu Utzi idatzi tty-n
SIGTTIN 21,21,26 Gelditu Atzeko planoko prozesuaren sarrera tty
SIGTTOU 22,22,27 Gelditu Atzeko planoko prozesuaren irteera tty

SIGKILL eta SIGSTOP seinaleak ezin dira harrapatu, blokeatu edo baztertu.

Hurrengoa POSIX.1 estandarretan ez dauden seinaleak, baina SUSv2 eta SUSv3 / POSIX 1003.1-2001 kodeetan azaltzen dira.

Seinalea Balio Ekintza Iruzkina
SIGPOLL Epea Gertakari polita (Sys V). SIGIO sinonimo
SIGPROF 27,27,29 Epea Profileko tenporizadorea iraungi da
SIGSYS 12 - 12 Core Errutina argumentu okerra (SVID)
SIGTRAP 5 Core Trazatu / apuntatu tranpa
SIGURG 16,23,21 IGN Egoera urriko socket (4.2 BSD)
SIGVTALRM 26,26,28 Epea Alarma birtuala (4.2 BSD)
SIGXCPU 24,24,30 Core CPU denbora-muga gainditu da (4.2 BSD)
SIGXFSZ 25,25,31 Core Fitxategiaren tamaina-muga gainditu da (4.2 BSD)

Linux 2.2 bertsioaren barnean , SIGSYS , SIGXCPU , SIGXFSZ eta (SPARC eta MIPS baino beste arkitekturetan) portaera lehenetsia ( SIGBUS ) prozesua amaitu da (core dump gabe). (Beste Unitate batzuetan, SIGXCPU eta SIGXFSZren ekintza lehenetsia prozesua amaitzean kentzea ez da amaitu.) Linux 2.4 POSIX 1003.1-2001 eskakizunekin bat dator seinale horiei, prozesua amaitzerakoan prozesua amaitzean.

Hurrengo beste seinale batzuk.

Seinalea Balio Ekintza Iruzkina
SIGEMT 7 - 7 Epea
SIGSTKFLT -, 16 - Epea Akabatzeko akatsa coprocessor (ez da erabili)
SIGIO 23,29,22 Epea I / O posiblea (4.2 BSD)
SIGCLD -, -, 18 IGN SIGCHLD sinonimo bat
SIGPWR 29,30,19 Epea Energia porrota (Sistema V)
SIGINFO 29, -, - SIGPWR sinonimo bat
SIGLOST -, -, - Epea Fitxategi blokeoa galdu da
SIGWINCH 28,28,20 IGN Leihoaren tamaina aldatu (4.3 BSD, Eguzki)
SIGUNUSED -, 31 - Epea Ez erabili seinalea (SIGSYS izango da)

(Seinalearen 29a SIGINFO / SIGPWR alfa batean baina SIGLOST da sparc-en).

SIGEMT ez dago zehaztuta POSIX 1003.1-2001 zenbakian, baina inoiz ez da Unices gehienetan agertzen, non bere ekintza lehenetsia normalean prozesua bukatzeko core dump batekin amaitzeko.

SIGPWR (POSIX 1003.1-2001an zehazten ez dena) normalean ez da ohartzen lehenespenez agertuko den beste unitateetan.

SIGIO (POSIX 1003.1-2001an zehazten ez dena) lehenespenez ezeztatu egingo da beste hainbat Unices-en.

Denbora errealeko seinaleak

Linux- ek denbora errealeko seinaleak onartzen ditu POSIX.4 denbora errealean luzapenetan definitutako (eta orain POSIX 1003.1-2001an). Linuxek 32 denbora errealeko seinaleak onartzen ditu, 32 ( SIGRTMIN ) eta 63 ( SIGRTMAX ) zenbakiak. (Programak beti denbora errealeko seinaleei SIGRTMIN + n notazioari erreferentzia egin behar zaie, denbora errealeko seinaleen bitarteko zenbakiak unitateen arabera alda baitira).

Seinale estandarrek ez bezala, denbora errealeko seinaleak ez dute aurredefinitutako esanahirik: denbora errealeko seinale multzo osoa aplikazioetarako definitutako helburuetarako erabil daiteke. (Kontuan izan, ordea, LinuxThreads-en ezarpenak lehen hiru denbora errealeko seinaleak erabiltzen dituela.)

Unhandled denbora errealeko seinale baten ekintza lehenetsia jasotzen duen prozesua amaitzeko.

Denbora errealeko seinaleak honako hauek bereizten dira:

  1. Denbora errealeko seinaleen instantzia anitzak piztu daitezke. Aitzitik, seinale estandarraren hainbat instantzia entregatzen badira seinalea blokeatuta dagoen bitartean, instantzia bakar bat piztu da.
  2. Seinalea sigqueue (2) erabiliz bidaltzen bada, osagarriaren balioa (osoko zenbaki bat edo erakuslea) seinalearekin bidal daiteke. Hartzaile-prozesuak seinalea kontrolatzen duen seinale bat ezartzen badu SA_SIGACTION bandan sigaction (2) erabiliz, datu horiek segidok_t egituraren se_value eremuaren bidez eskuliburuaren bigarren argumentura pasatuko dira. Gainera, egitura horren sin_piar eta si_uid-ak seinalea bidaltzen duten prozesu PID eta benetako erabiltzaile IDa lortzeko erabil daiteke.
  3. Denbora errealean seinaleak bermatuta daude. Hainbat motako denbora errealeko seinaleak bidaliko dira bidalitako ordenan. Hainbat denbora errealeko seinaleak prozesu batera bidaltzen badira, behe-kopuruko seinale batekin hasten dira. (Hau da, behe-kopuruko seinaleak lehentasun handiena dute).

Seinale estandarrak eta denbora errealeko seinaleak prozesu baterako dauden arren, POSIXek lehenik bidaltzen ez duen zehaztasuna uzten du. Linux, beste inplementazio asko bezala, kasu honetan seinale estandarrak lehentasuna ematen du.

POSIXen arabera, ezarpenek gutxienez _POSIX_SIGQUEUE_MAX (32) denbora errealeko seinaleak baimendu beharko lituzkete prozesu batean. Hala ere, prozesu muga bakoitzeko baino baxuagoa ez denez, Linux-ek sistemako muga ezarriko du prozesu guztientzako denbora errealeko enkanteen seinaleen kopuruari dagokionez.

Muga hau ikusi daiteke (eta pribilegioarekin) / proc / sys / kernel / rtsig-max fitxategi bidez aldatu da. Fitxategi erlazionatua, / proc / sys / kernel / rtsig-max , denbora errealeko seinaleak zenbat ilaran dauden jakiteko erabil dezakezu.

KONFORMATZEKO

POSIX.1

Garrantzitsua: erabili man komandoa ( % man ) komando bat nola erabiltzen den zure ordenagailuan.