SIGFPE

SIGFPE
Descriere Operație aritmetică eronată
Mod implicit se încheie cu un dump de memorie
Codurile SA_SIGINFO
FPE_INTDIV Împărțirea întregului cu zero
FPE_INTOVF overflow întreg
FPE_FLTDIV Împărțirea cu virgulă mobilă zero
FPE_FLTOVF debordare în virgulă mobilă
FPE_FLTUND Debordare în virgulă flotantă
FPE_FLTRES Eroare de precizie în virgulă mobilă
FPE_FLTINV Operatie invalida cu numere cu virgula mobila
FPE_FLTSUB Dincolo de index

Pe sistemele POSIX , SIGFPE  este un semnal trimis unui proces atunci când încearcă să efectueze o operație aritmetică eronată.

SIGFPE este o constantă întreagă definită în signal.h. Numele simbolice ale semnalelor sunt folosite în locul numerelor, deoarece numerele semnalelor pot diferi în diferite implementări.

Etimologie

SIG  - prefix comun , semnale, FPE  - abrevierea engleză.  floating-point exception  - o excepție într-o operație în virgulă mobilă. De fapt, SIGFPE este folosit și pentru aritmetica întregului, dar numele este păstrat pentru compatibilitatea cu codul invers .

Utilizare

Un SIGFPE poate fi trimis unui proces din mai multe motive. Cel mai comun dintre acestea este depășirea tipului de date ca urmare a unor valori de intrare neașteptat de mari (sau mici) și/sau a unei erori de proiectare a programului.

SIGFPE poate fi interceptat sau ignorat. Ignorarea SIGFPE în unele cazuri poate duce la rezultate imprevizibile - programul se poate bucla în încercarea de a efectua o operație eronată. Dacă SIGFPE nu este rezultatul unei operații aritmetice (dar, de exemplu, trimis folosind un apel de sistem kill() ), atunci o astfel de ignorare este destul de sigură.

La împărțire, SIGFPE apelează nu numai la un divizor zero - pe unele platforme (inclusiv x86), diviziunea întregului INT_MIN, cel mai mic număr întreg (negativ), cu (−1), nu poate fi efectuată, deoarece un număr pozitiv cu acest modul nu este reprezentabil. (cu INT_MIN = (−2147483648), INT_MAX = 2147483647).

Vezi și