sigset, sighold, sigrelse o sigignore Subroutine
Finalidad
Mejorar la instalación de señal y proporcionar gestión de señal.
Biblioteca
Biblioteca C estándar (libc.a)
Sintaxis
Descripción
Las subrutinas sigset, sighold, sigrelsey sigignore mejoran el recurso de señal y proporcionan gestión de señales para los procesos de aplicación.
La subrutina sigset especifica la acción de señal del sistema que se debe realizar al recibir un parámetro Signal .
Las subrutinas sighld y sigrelse establecen regiones críticas de código. Una llamada a la subrutina sighold es análoga a elevar el nivel de prioridad y aplazar o retener una señal hasta que sigrelsereduzca la prioridad. La subrutina sigrelse restaura la acción de señal del sistema en la acción especificada anteriormente por la estructura sigset .
La subrutina sigignore establece la acción para el parámetro Signal en SIG_IGN.
La otra rutina de gestión de señales, señal, no debe utilizarse junto con estas rutinas para un tipo de señal determinado.
Parámetros
| Elemento | Descripción |
|---|---|
| Señal | Especifica la señal. Al parámetro Signal se le puede asignar cualquiera de las señales siguientes:
* La acción predeterminada para estas señales es una terminación anómala. |
Para la portabilidad, los programas de aplicación deben utilizar o capturar sólo las señales listadas anteriormente. Otras señales son dependientes del hardware y dependientes de la implementación y pueden tener significados o resultados muy diferentes a través de los sistemas. Por ejemplo, las señales de System V (SIGEMT, SIGBUS, SIGSEGVy SIGIOT) dependen de la implementación y no se listan anteriormente. Las implementaciones específicas pueden tener otras señales dependientes de la implementación.
| Elemento | Descripción |
|---|---|
| Función | Especifica la opción. El parámetro Función se declara como un puntero de tipo a una función que devuelve void. Al parámetro Función se le asigna uno de los cuatro valores: SIG_DFL, SIG_IGN, SIG_HOLD, o una dirección de una función de captura de señal. Las definiciones de las acciones realizadas por cada uno de los valores son:
|
| address | Señal de captura. Tras la recepción de la señal especificada por el parámetro Señal , el proceso de recepción debe ejecutar la función de captura de señal a la que apunta el parámetro Función . Se libera cualquier señal pendiente de este tipo. Esta dirección se conserva entre las llamadas a las otras funciones de gestión de señales, sighold y sigrelse. El número de señal Signal se pasa como único argumento a la función de captura de señal. Antes de especificar la función de captura de señal, el valor del parámetro Función para la señal capturada se establece en SIG_HOLD. Durante el retorno normal del manejador de captura de señal, la acción de señal del sistema se restaura en el parámetro Función y se libera cualquier señal retenida de este tipo. Si se realiza un goto no local (consulte la subrutina setjmp ), se debe invocar la subrutina sigrelse para restaurar la acción de señal del sistema y liberar cualquier señal retenida de este tipo. Al regresar de la función de captura de señal, el proceso de recepción reanudará la ejecución en el punto en el que se interrumpió, excepto para las señales definidas por la implementación en las que esto puede no ser cierto. Cuando se produce una señal que se va a capturar durante una operación no atómica como, por ejemplo, una llamada a la subrutina read, write, openo ioctl en un dispositivo lento (como un terminal); durante una subrutina pause ; durante una subrutina wait que no se devuelve inmediatamente, se ejecuta la función de captura de señal. La rutina interrumpida devuelve un valor de -1 al proceso de llamada con la variable global errno establecida a EINTR. |
Valores de retorno
Al completarse correctamente, la subrutina sigset devuelve el valor anterior de la acción de señal del sistema para la Señal especificada. De lo contrario, devuelve SIG_ERR y la variable global errno se establece para indicar el error.
Para las subrutinas sighold, sigrelsey sigignore , se devuelve un valor de 0 tras el éxito. En caso contrario, se devuelve un valor de -1 y se establece la variable global errno para indicar el error.
Códigos de error
La subrutina sigset, sighold, sigrelseo sigignore no es satisfactoria si se cumple lo siguiente:
| Elemento | Descripción |
|---|---|
| EINVAL | El valor de Señal es un número de señal no permitido o el manejo predeterminado de Señal no se puede cambiar. |