SIGFPE | |
---|---|
Popis | Chybná aritmetická operace |
Výchozí | končí výpisem paměti |
SA_SIGINFO kódy | |
FPE_INTDIV | Celočíselné dělení nulou |
FPE_INTOVF | přetečení celého čísla |
FPE_FLTDIV | Dělení nulou s pohyblivou řádovou čárkou |
FPE_FLTOVF | přetečení s plovoucí desetinnou čárkou |
FPE_FLTUND | Přetečení s plovoucí desetinnou čárkou |
FPE_FLTRES | Chyba přesnosti s pohyblivou řádovou čárkou |
FPE_FLTINV | Neplatná operace s pohyblivou řádovou čárkou |
FPE_FLTSUB | Mimo index |
V systémech POSIX je SIGFPE signál odeslaný procesu, když se pokusí provést chybnou aritmetickou operaci.
SIGFPE je celočíselná konstanta definovaná v signal.h. Místo čísel se používají symbolické názvy signálů, protože čísla signálů se mohou v různých implementacích lišit.
SIG - společná předpona , signály, FPE - zkratka angličtiny. výjimka s pohyblivou řádovou čárkou - výjimka v operaci s pohyblivou řádovou čárkou. Ve skutečnosti se SIGFPE používá také pro aritmetiku celých čísel, ale název je zachován kvůli zpětné kompatibilitě kódu.
SIGFPE může být odeslán do procesu z mnoha důvodů. Nejběžnějším z nich je přetečení datového typu v důsledku neočekávaně velkých (nebo malých) vstupních hodnot a/nebo chyby v návrhu programu.
SIGFPE může být zachycen nebo ignorován. Ignorování SIGFPE může v některých případech vést k nepředvídatelným výsledkům – program se může zacyklit ve snaze provést chybnou operaci. Pokud SIGFPE není výsledkem aritmetické operace (ale například odeslané pomocí systémového volání kill() ), je takové ignorování zcela bezpečné.
Při dělení SIGFPE volá nejen nulového dělitele - na některých platformách (včetně x86) nelze provést celočíselné dělení INT_MIN, nejmenšího (záporného) celého čísla (−1), protože kladné číslo s tímto modulem nelze reprezentovat (s INT_MIN = (-2147483648), INT_MAX = 2147483647).
POSIX signály | |||
---|---|---|---|
| |||
|