C Sigprocmask Función Uso

C Sigprocmask Función Uso
Es posible que haya escuchado sobre la programación de socket en c. Una de las funciones de socket es la función "sigprocmask". Esta función se ha utilizado generalmente en el código para inspeccionar o alterar la máscara de señal de la función de llamada. La máscara de señal es un término utilizado para un grupo de señales que actualmente se bloquean y no se pueden transmitir para la función de llamadas. Tal tipo de señal se conoce como "señales bloqueadas."Puede decir que un proceso aún puede recibir las señales bloqueadas, pero no se utilizará hasta que se desbloqueen y sean lanzados, yo.mi., aumentó. Hasta entonces, estará pendiente. Por lo tanto, dentro de la guía de hoy, discutiremos el uso de la función Sigprocmask en la programación C. Hagamos un comienzo.

Después del Ubuntu 20.04 Inicio de sesión exitoso, debe iniciar el shell del Ubuntu 20.04 Sistema primero después del inicio de sesión. Entonces, pruebe el atajo "Ctrl+Alt+T" simplemente en la pantalla de escritorio. Lanzará la carcasa del terminal en algunos segundos. Asegúrese de actualizar su sistema utilizando el paquete APT de su sistema. Después de eso, debe ejecutar la instrucción de "tocar" junto con el nombre del archivo que desea generar, yo.mi., Para crear el archivo C a través del shell. Este archivo recién creado se puede encontrar en la carpeta "Inicio" del Explorador de archivos de su sistema. Puede intentar abrirlo con el editor "Texto" para crear código en él. Otra forma de abrirlo en el shell es usar el editor "GNU Nano" utilizando la palabra clave "nano" con un nombre de archivo como se demuestra debajo.

Ejemplo 01:

Hemos comenzado nuestro código en el editor "nano" al incluir algunos encabezados C necesarios. Estos encabezados pueden ser los encabezados más comunes como "Stdio.H "," Unistd.h "y" stdlib.H ". Aparte de eso, el archivo de encabezado más importante "señal".H "se ha agregado para utilizar las funciones de manejo de señal en el código C. Todo el trabajo se ha realizado en el método principal () de este programa. Entonces, después de iniciar el método, hemos inicializado algunas variables de construcción de señal usando el objeto "Sigset_T", i.mi., S, OS y PS. El "S" significa señal, "OS" significa un conjunto de señal original, y la "PS" significa un conjunto de señal pendiente.

El "SigemptySet" ha estado utilizando la construcción "S" para inicializar o declarar una máscara de señal y ignorar todas las señales. Después de esto, la función "sigaddset" se ha utilizado para agregar la señal inicializada "S" al conjunto de señal Sigint especificado. La rutina de controlador de señal Sigint se refiere al "Ctrl+C", i.mi., interrupción del personaje. Detendrá la ejecución del proceso actual y volverá al bucle principal.

Ahora viene la función Sigprocmask aquí usando tres parámetros. El parámetro SIG_BLOCK muestra que todas las señales encontradas en un conjunto de señal "S" se agregarán al conjunto de señal de corriente. El & S indica el puntero a un conjunto de señal específico que se ha utilizado para alterar la máscara de señal según la construcción "Sigint". El parámetro "OS" apunta hacia el conjunto de señal que almacena la máscara de señal para un método particular. La instrucción printf está aquí para mostrar la máscara de señal anterior del conjunto de señal. La función "Sigpending" está aquí para guardar datos sobre las señales dentro del conjunto de señal que están pendientes. La instrucción printf está nuevamente aquí para mostrar la señal pendiente establecida en el shell utilizando la construcción "PS". El método "Kill" llegó aquí para matar el proceso actual utilizando la ID del proceso a través de la función "getPID ()". Se llama nuevamente la función Sigpending para obtener las señales pendientes en el conjunto, y la instrucción Printf mostrará las. La función Sigprocmask utiliza el conjunto predefinido "SIG_UNBLOCK" para continuar desbloqueando y elevando la función en la lista pendiente. El conjunto de señal "S" se lanzará con la ayuda de Signal Mask "OS"."

Compile su archivo de código C utilizando la instrucción de Below Shows en el shell.

Su archivo ha sido ejecutado. Le mostrará la vieja señal establecida en el shell, “OS."Pero, como se bloquean las señales de Set" S ", veremos que las señales están recibiendo pero pendientes y no ejecutando. No podemos matar el proceso a medida que se bloquea el procesamiento de las señales. Por fin, hemos lanzado las señales.

Ejemplo 02:

Veamos otro ejemplo de la función "sigprocmask" es C para bloquear y desbloquear el conjunto de señal específico. Entonces, hemos agregado un nuevo archivo y probado un nuevo código. Primero, debe agregar los mismos archivos de encabezado en el archivo de código, como se muestra a continuación. La función "Catcher" definida por el usuario está aquí para mostrar simplemente que estamos dentro de esta función utilizando su función printf.

La ejecución principal comienza desde la función Main () de nuestro código. Contiene dos argumentos. En primer lugar, hemos utilizado las construcciones de tiempo "S" para Start y "F" para finalizar a través de la palabra clave 'Time_t ". La estructura Sigaction se declara como "sact" para establecer la naturaleza para una señal para hacer algo. La construcción "Sigset_T" se usa para declarar dos conjuntos de señales, I.mi., "NS" para un nuevo set y "OS" para sets antiguos. La variable de doble tipo "DIF" se declara. En primer lugar, la función SigemptySet se usa para inicializar la máscara de señal para la estructura "SACT" y excluir todas las señales. El controlador SA_FLAGS se ha utilizado para Bitmask of Sigaction y se inicializó a cero. El "Sa_handler" se ha utilizado para declarar la función "Catcher" como controlador de señal usando el objeto Sigaction "SACT". La función SigAction se llama aquí usando el Sigalrm para establecer la alarma para la señal "SACT" aquí.

El "SigemptySet" se ha utilizado en la señal "NS" establecida para inicializar una máscara de señal y excluir todas las señales. La función SigaddSet agrega el SigalRM al conjunto de señal "NS". El sigproCmask agrega las señales "NS" al conjunto de señal de corriente. El conjunto de señal "OS" representa la máscara de señal para un proceso particular. La hora de inicio se ha observado e imprimida utilizando la función "ctime ()" en printf. La alarma por 1 segundo se inicializa y se ha observado el tiempo de finalización. La diferencia entre el acabado y los horarios de inicio se ha calculado utilizando la función "Diferftime". Si la diferencia es inferior a 10 segundos, la función Sigprocmask usará el conjunto de señal "OS" para reemplazar la máscara de señal actual para un proceso particular utilizando Sig_setmask. La última declaración de printf está aquí para mostrar la hora en que se lanza un conjunto de señal para alarmas.

Después de compilar y ejecutar el archivo, nos muestra el momento en que se bloquea la señal de alarma. Después de unos segundos, se llama a la función del receptor, y otra declaración muestra el tiempo de desbloqueo de la señal de alarma establecida para liberarse.

Conclusión:

Este artículo muestra la explicación sobre el uso de la función Sigprocmask en el idioma C. Hemos discutido 2 ejemplos breves y directos para ilustrar el funcionamiento de la función Sigprocmask junto con otras funciones de señal. Esperamos que este artículo sea una ventaja para cada usuario que sea nuevo en las señales.