signal

Función raise

int raise(int señal);

Esta función envía una señal al parámetro señal que ejecutará el programa en ejecución.

Valor de retorno:

La función raise devuelve cero, si la operación se realizo con éxito, y un valor distinto a cero, si la operación falla.

Ejemplo:

Función signal

void (signal(int señal, void (func)(int))(int);

Elige una de las tres formas que ha de manejar la cantidad de señal en señal. Si el valor de func es SIG_DFL, la señal se controlará por defecto. Si el valor de func es SIG_IGN, la señal será ignorada. Si no, func apuntará a una función que será llamada cuando se produzca una señal. Dicha función llamará a un controlador de señales.

Cuando se produce una señal, y si func apunta a una función, primeramente un equivalente a signal (señal, SIG_DFL ); se ejecuta un bloqueo de señal, definido según la implementación, se realizara. (Si el valor de señal es SIGILL, en caso de que se reinicie SIG_DFL que está definido según la implementación). A continuación la equivalente a (*func)( señal ); se ejecutara. La función func puede terminar mediante la ejecución de la sentencia return o llamando a las funciones abort, exit, o longjmp. Si func ejecuta una sentencia de retorno y el valor de la señal era SIGFPE o cualquier otro valor definido según la implementación correspondiendo a una excepción calculada, el comportamiento no está definido. De lo contrario, el programa continúa la ejecución desde el momento de interrupción.

Si el resultado de la señal se produce llamando a las funciones otra manera {f:abort} o raise, el comportamiento no está definido si el controlador de señales llama a cualquier función de la librería estándar distinta a sí misma, la función signal (con el primer argumento de la señal numérica correspondiendo a la señal que causó la invocación al controlador), o hace referencia a cualquier objeto con una duración de almacenamiento estático distinto al asignado a un valor de una variable de duración estática de tipo volatil sig_atomic_t. Además, si la llamada a la función signal resulta ser un retorno de SIG_ERR, el valor de errno será indeterminado.

Al comienzo del programa, el equivalente a signal (señal, SIG_IGN); puede ser ejecutada por algunas señales seleccionadas de una manera definida según la implementación; el equivalente a signal (señal, SIG_DFL); se ejecutara en todas las demás señales definidas por la implementación.

Valor de retorno:

La función signal devuelve el valor de func en la llamada más reciente a signal para la señal especificada, señal, si la operación fue realizada con éxito. Si falla, entonces devuelve {m:SIG_ERR:SIG_ERR} y se guarda un valor positivo en errno.

Ejemplo: