Kezdőoldal » Számítástechnika » Programozás » Mit jelentenek? :SIGFPE,...

Mit jelentenek? :SIGFPE, SIGSEGV, SIGBUS, SIGILL És miért jeleznek hibát Pascal programozás során?

Figyelt kérdés
2015. jan. 20. 21:04
 1/1 anonim ***** válasza:
100%

Ezek a Unix alapú rendszereken olyan jelek, amik a folyamatod és kernel közötti kommunikációban használatosak. Valahogy úgy képzeld el mint a megszakításokat a processzorban. Ha egy folyamat kap egy jelet, az azonnal megszakítja magát hogy feldolgozza a jelet, és jeltől függően reagál rá. Vannak jelek amikkel nem csinál semmit, vannak jelek amik megszakítják vagy felfüggesztik a folyamatot, de olyan is van ami core dump-ot készíttet a memóriáról.


Például ha nyomsz egy Ctrl+C-t egy terminálba, akkor a kernel a terminálban futó folyamatnak SIGINT parancsot küld, ami jelzi a folyamat számára hogy le kéne állnia, ami vagy leáll, vagy nem, attól függően hogy mit csinál és hogy írták meg. El lehet pl. kivétellel kapni és akkor nem fog leállni.


Ellenben ha "kill -9"-el lövöd ki a folyamatot az SIGKILL-t küld ami azonnal leállítja a folyamatot.


A felsorolt jelek a következőek:


SIGFPE: hibás aritmetikai művelet, pl. 0-val való osztás.


SIGSEGV: ezt szokták segmentation fault-nak nevezi, olyan virtuális memóriacímre hivatkozott a programoz ami nincs lefoglalva, vagy nem lehet olvasni. Pl. ha NULL pointert olvasol, vagy valamit felszabadítottál de még használod.


SIGBUS: Ez akkor jelentkezik ha olyan fizikai memóriacímre hivatkozol amit senki sem használ, vagy nem lehet megcímezni. Linux esetében ez főleg akkor jelentkezik ha egy olyan hardver elemre hivatkozol ami nem létezik. Ez elég ritka mert egy program követlenül csak a számára kiosztott virtuális memóriához fér hozzá modern operációs-rendszereken, és arra ott van a sig fault.


SIGKILL: erről már írtam, a kernel azonnal megszakítja a folyamat futását, ebbe nincs beleszólása a programnak. Ezt előlehet idézni pl a "kill -9" paranccsal, de az oprendszer máskor is használhatja.


A fentiek alapértelmezett esetben leállítják a folyamatot mert hibát jeleznek, de van amit el lehet kapni és fel lehet dolgozni és akkor a program tovább tud futni.


A többi jelzést is megtalálod itt:

[link]

2015. jan. 20. 21:57
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!