Next: POSIX signal-szemantika
Up: Kivételes események kezelésének
Previous: A signalok feladata
A programok szabadon
rendelkezhetnek arról, hogy egy adott fajtájú signallal
mit akarnak csinálni.
Erre való a signal rendszerhívás. Ennek elso paramétere a
signal-fajtát adja meg, második pedig megmondja, hogy mit kell az
olyan fajta signalokkal csinálni (lehetséges
értékei: SIG_IGN = a signalt nem kell
figyelembe venni; SIG_DFL = a rendszerben alapértelmezésnek számító
dolgot kell csinálni; ezenkívül megadhatjuk a program egy eljárásának
a címét is, amely az adott típusú signalok esetén lesznek meghívva).
Példa:
signal(SIGINT, SIG_IGN); /* Nem fogadom ezutan a SIGINT-et */
A UNIX rendszerben a fontosabb signalok a következok:
- SIGHUP : Megszakadt a felhasználói terminál és a gép közötti
kapcsolat
- SIGINT : "DEL" billentyut megnyomták
- SIGQUIT : Ctrl- billentyut megnyomták
- SIGILL : A processzor "illegal instruction"-t talált
- SIGIO : Egy aszinkron I/O esemény bekövetkezésérol
kapunk ezzel értesítést.
- SIGFPE : A lebegopontos számításokat végzo egység valami
kivételes esetet jelez.
- SIGKILL : A folyamatot meg akarják állítani (ezt a signalt nem
lehet ignorálni vagy elkapni!)
- SIGSEGV : A program megszegte a szegmentálási szabályokat
- SIGPIPE : Olyan pipe-ra akarunk írni, amit senki sem olvas
- SIGPWR : Áramkimaradás van (a rendszer ilyenkor általában
szünetmentes tápegységrol megy, és hamarosan
leállása várható).
- SIGALRM : Korábban alarm() rendszerhívással
kért signal megérkezése
- SIGCLD : A folyamat egy gyermek-folyamata befejezodott.
- SIGURG : A folyamat sürgosnek minosített adatokat
kap (ld. késobb a hálózatokról szóló
részt).
- SIGUSR1 : A signal jelentését a felhasználó (programozó)
szabadon definiálhatja.
- SIGUSR2 : A signal jelentését a felhasználó (programozó)
szabadon definiálhatja.
- SIGSYS : A folyamat egy ismeretlen rendszerhívást
hajtott végre.
- (Ezeken kívül más signal-ok is vannak, de ez most nem érdekes.)
A kill() rendszerhívással lehet egy signalt küldeni egy
folyamatnak. A rendszerhívás elso paramétere az elküldendo signal
típusa, a második araméter pedig annak a folyamatnak az
azonosítója, akinek a
signalt szántuk.
(Ha a pid negatív, akkor a signal minden olyan folyamatnak el lesz
küldve, amelynek a folyamat-csoport
azonosítója egyenlo pid argumentumának abszolutértékével.)
Van egy speciális típusú signal, a SIGALRM. Ezt lehet az alarm()
rendszerhívással generálni. Az alarm() egyetlen paramétere egy egész
szám. Abban az egész számban kell megadni az operációs rendszernek,
hogy hány másodperc múlva küldjön a folyamatunknak egy SIGALRM signalt.
Next: POSIX signal-szemantika
Up: Kivételes események kezelésének
Previous: A signalok feladata
Csizmazia Balazs
Tue Apr 2 00:06:27 MET DST 1996