CUESTRO DE FUNCION CIGACTIONES C

CUESTRO DE FUNCION CIGACTIONES C
Una sigax () es una función que permite llamar/observar o examinar una acción específica asociada con una señal particular. Se cree que considere una función de señal y sigactación en la misma página. Pero en realidad, no ha ocurrido. La función Signal () no bloquea otras señales cuando la ejecución del controlador actual está en proceso. Al mismo tiempo, la función SigAction puede bloquear otras señales hasta que el controlador actual haya regresado.

Sintaxis

#incluir
# int SigAction (int sig, const struct sigaction *__ restrict__ nuevo, struct sigaction *__ restrict__ antiguo);

La función Sigaction examina la acción asociada con una señal particular. Ahora estamos hablando de los argumentos en el parámetro de la función Sigaction. El primero es int 'Sig', ya que el tipo de datos revela que es un número que se refiere a la señal que ya se reconoce. La función SigAction establece la acción y la asocia con la señal. El argumento SIG que se usa debe estar en la biblioteca.

Constante struct Sigaction es un puntero que se conoce por primera vez como nulo principalmente. Si es así, la función SigAction examina la acción que se define actualmente para manejar SIG. Esto no modificará ni cancelará esta acción. Y si el nuevo puntero no se conoce como valor nulo, apuntará a una estructura de Sigaction. La acción identificada específicamente en la estructura de Sigaction se convierte en la nueva acción asociada con SIG.

El tercer argumento es Struct Sigaction *antiguo señala la dirección de memoria en la que la función Sigaction almacena la estructura de SigAction. La función SigAction utiliza esta dirección de memoria para almacenar la estructura que describe la actividad actualmente asociada con SIG. El valor anterior puede ser un valor nulo; En ese caso, la estructura Sigaction no se almacena como información.

Estructura de la sigactidad

Ahora hablaremos sobre la estructura Sigaction.

Los miembros que están presentes en la estructura se mencionan aquí.

Void (*) (int) sa_handler

Es un puntero de la función y maneja la señal que se le ocurre hacia ella. El valor de esta función puede mostrar la acción predeterminada o indicar la señal que se ignorará.

Máscara sigset_t

No podemos usar el mecanismo de bloquear ninguna señal; Si Sa_mask ha utilizado las señales de bloqueo, estas señales se ignorarán. La función SigAction () no devuelve ningún error.

Int sa_flags

Hay muchas banderas que afectan el comportamiento de la señal. Algunos de ellos se explican aquí.

_SA_IGNORE

Esta es la única salida, y cualquier aplicación no puede especificarla.

SA-RESTART

Le dice al sistema que obtenga las funciones de reinicio de la biblioteca si son interrumpidas por una señal. Las funciones en las que se aplica esta función de reinicio son aquellas que se definen como para ser interrumpidas por la señal y luego establecen errno en eintr que acepta (), pausa (), cierre () y Big Pause () son aquellas funciones que son reiniciable si una señal los interrumpe.

Sa_siginfo

Esta característica le dice al sistema que use la acción de señal especificada por SA_SIGACTION en lugar de SA_Handler. Cuando el indicador está apagado y la acción se ve afectada por la señal, entonces la función del controlador de señal especificada por SA_HANDLER se invoca como una función vacía (int firma); Aquí, SIGTO contiene el número de señal generado el sistema.

SA_SIGACTION

Es un puntero que apunta a la función asignada para manejar la señal. Esta función contiene tres parámetros. El primero incluye un tipo entero que contiene la señal de la función para ser invocado. El segundo argumento es un tipo de puntero Siginfo_t; Contiene información adicional sobre la fuente de señal. El tercero es el 'puntero al vacío.'

Implementación de la función Sigaction

Hemos implementado los códigos SigAction en el sistema operativo Linux. Use un editor de texto para escribir el código fuente en el lenguaje de programación C; Para la salida del valor resultante, use el terminal Ubuntu compilando a través de un compilador GCC. Que compilar y luego ejecutar el código.

Ejemplo 1

Este ejemplo contiene una lista de bibliotecas y . En este ejemplo, se usa y se establece una máscara de señal con SigAction () para no llamar al otro manejador, especialmente cuando se usa un solo controlador. La función del controlador de señal contiene el signo como argumento.

La identificación del proceso se muestra en el programa principal para garantizar el trabajo. Sigaction es una estructura que describe un manejador de señal. Esta es la razón por la cual un controlador de señal está contenido por él. Se utiliza una máscara de señal que muestra que debe haber bloqueo de una señal mientras la función del manejo de la señal está en ejecución. Ahora especifique la función del controlador de señal cuando se ha producido una señal especificada.

# Ley de Struct Sigaction;
# acto.SA.Handler = $ Sighandler;

Después de eso, todas las señales se agregan al conjunto de máscara de señal. Todas las señales se bloquearán cuando las funciones del controlador de señal se ejecuten. Cuando nuestro controlador de señal generalmente existe, restaura la máscara de señal original. SA_RESTART reanudará la función. Se agrega un controlador de señal a Sigint.

Después de escribir el código, compítelo usando el compilador en el terminal Ubuntu. "Sig.c "es el nombre de un archivo.

$ GCC -O SIG. C
ps./Sig

Tras la ejecución, puede ver que el ID del proceso se muestra primero cuyas señales deben bloquearse. El mensaje que se muestra significa que la función devolverá un valor positivo.

Ejemplo 2

Ahora considere otro ejemplo, en el que la primera parte del ejemplo determina si la señal SigChld se está ignorando actualmente. Usando un puntero nulo para un nuevo argumento, el controlador de señal actual no se cambia. El programa principal contiene la instrucción IF para usar la función SigAction; Si el valor devuelto es -1, significa que el niño está siendo ignorado. Y en la otra parte, si el valor devuelto es la señal misma. Significa que el niño está siendo incumplido.

En la ejecución, verá que el niño predeterminado.

Ejemplo 3

Este ejemplo contiene la misma funcionalidad que el segundo ejemplo, pero también se agregan algunas características adicionales. Como se agrega un nuevo controlador en esta función a través de Sigaction.

Conclusión

El artículo 'Uso de la función Sigaction' contiene la función de funcionamiento y una descripción detallada de sus parámetros en los argumentos. Sigation juega un papel vital en el bloqueo de esas señales que no son reconocidas o son de hackers. Es por eso que la mayoría de los programadores prefieren las funciones Sigaction para ser utilizadas en los programas. SA_FLAG es un argumento esencial de la función Sigaction, por lo que hemos explicado algunos indicadores importantes con funcionalidad básica. El sistema operativo Linux se aplica para un papel importante en la implementación de la función Sigaction en el lenguaje de programación C. Esta guía tiene como objetivo explicar las características de SigAction y la estructura diseñada para apuntar a las señales que se acercan a ella.