SIGFPE

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.

Etymologie

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.

Použití

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).

Viz také