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.
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.
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).
Señales POSIX | |||
---|---|---|---|
| |||
|