SIGFPE

SIGFPE
Descripción Operación aritmética errónea
Defecto terminar con un volcado de memoria
Códigos SA_SIGINFO
FPE_INTDIV división entera por cero
FPE_INTOVF desbordamiento de enteros
FPE_FLTDIV División por punto flotante cero
FPE_FLTOVF desbordamiento de punto flotante
FPE_FLTUND Desbordamiento de punto flotante
FPE_FLTRES Error de precisión de punto flotante
FPE_FLTINV Operación de punto flotante no válido
FPE_FLTSUB Más allá del índice

En los sistemas POSIX , SIGFPE  es una señal enviada a un proceso cuando intenta realizar una operación aritmética errónea.

SIGFPE es una constante entera definida en el signal.h. Los nombres simbólicos de las señales se utilizan en lugar de los números, ya que los números de las señales pueden diferir en diferentes implementaciones.

Etimología

SIG  - prefijo común , señales, FPE  - abreviatura del inglés.  excepción de coma flotante  : una excepción en una operación de coma flotante. De hecho, SIGFPE también se utiliza para la aritmética de enteros, pero el nombre se conserva para la compatibilidad con el código anterior.

Uso

Un SIGFPE puede enviarse a un proceso por varias razones. El más común de estos es el desbordamiento del tipo de datos como resultado de valores de entrada inesperadamente grandes (o pequeños) y/o un error de diseño del programa.

SIGFPE puede ser interceptado o ignorado. Ignorar SIGFPE en algunos casos puede conducir a resultados impredecibles: el programa puede hacer un bucle en un intento de realizar una operación errónea. Si el SIGFPE no es el resultado de una operación aritmética (pero, por ejemplo, se envía mediante una llamada al sistema kill() ), entonces ignorarlo es bastante seguro.

Al dividir, SIGFPE llama no solo a un divisor de cero: en algunas plataformas (incluida x86), la división de enteros de INT_MIN, el entero más pequeño (negativo), por (−1) no se puede realizar, ya que un número positivo con este módulo no es representable (con INT_MIN = (−2147483648), INT_MAX = 2147483647).

Véase también