SIGFPE |
Описание |
Ошибочная арифметическая операция |
По умолчанию |
завершение с дампом памяти |
FPE_INTDIV |
Целочисленное деление на нуль |
FPE_INTOVF |
Целочисленное переполнение |
FPE_FLTDIV |
Деление на нуль с плавающей запятой |
FPE_FLTOVF |
Переполнение с плавающей запятой |
FPE_FLTUND |
Антипереполнение с плавающей запятой |
FPE_FLTRES |
Ошибка точности операции с плавающей запятой |
FPE_FLTINV |
Неправильная операция с плавающей запятой |
FPE_FLTSUB |
Запредельный индекс |
В POSIX-системах, SIGFPE — сигнал, посылаемый процессу, при попытке выполнения ошибочной арифметической операции.
SIGFPE — целочисленная константа, определённая в заголовочном файле signal.h
. Символьные имена сигналов используются вместо номеров, так как в разных реализациях номера сигналов могут различаться.
Этимология
SIG — общий префикс, сигналов, FPE — аббревиатура англ. floating-point exception — исключение в операции с плавающей запятой. На самом деле, SIGFPE используется и для целочисленной арифметики, название же сохраняется для обеспечения обратной совместимости кода.
Использование
SIGFPE может быть послан процессу по ряду причин. Самая распространенная из них — переполнение типа данных в результате неожиданно больших (или малых) значений входных данных и/или ошибки дизайна программы.
SIGFPE может быть перехвачен или проигнорирован. Игнорирование SIGFPE в некоторых случаях может привести к непредсказуемым результатам — программа может зациклиться в попытке выполнить ошибочную операцию. Если SIGFPE не является результатом арифметической операции (а, например, послан с помощью системного вызова kill()
), то такое игнорирование вполне безопасно.
При делении SIGFPE вызывает не только равный нулю делитель — на некоторых платформах (включая x86), целое деление INT_MIN, самого малого (отрицательного) целого числа, на (−1) не может быть выполнено, поскольку положительное число с этим модулем непредставимо (при INT_MIN = (−2147483648), INT_MAX = 2147483647).
См. также
|
---|
|
Некоторые сигналы, не включённые в POSIX, и синонимы |
---|
|
|