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:
- Denbora errealeko seinaleen instantzia anitzak piztu daitezke. Aitzitik, seinale estandarraren hainbat instantzia entregatzen badira seinalea blokeatuta dagoen bitartean, instantzia bakar bat piztu da.
- 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.
- 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.