Función pthread_kill 3 C

Función pthread_kill 3 C
“Podemos hacer numerosos hilos para admitir el flujo de procesos concurrentes. Uno de esos hilos Posix es la función pthread_kill () 3 C. El propósito del método pthread_kill () es solicitar una señal que se envíe al hilo designado. Puede alertar a otro proceso mientras llama a la función pthread_kill. A pesar de su nombre, se puede emplear para una variedad de propósitos distintos de la finalización de un proceso. Pthread kill () proporciona 0 cuando tiene éxito, un código de error cuando no tiene éxito y no se entrega ninguna señal. Dentro de esta guía, mostraremos el uso del método pthread_kill."

Es posible que desee comunicar mensajes entre los procesos en las siguientes circunstancias: cuando se termina una tarea, el proceso infantil iniciado por el proceso principal finaliza. El proceso infantil puede haber estado ejecutando un bucle infinito. Cuando se produce una falla u otro evento como el punto muerto, un proceso que forma parte de un grupo debe detener o indicar los otros procesos dentro del grupo. Mientras coordina, dos procesos deben sincronizarse usando esta función. Por ejemplo, un hilo podría utilizar esto para influir en cómo se transmite una señal a un grupo de otros hilos. A continuación se muestra a continuación la sintaxis de la función pthead_kill () de c. Señal.h El archivo de encabezado H se usa porque todas estas funciones se definen dentro de este archivo de encabezado.

#incluir
int pthread_kill (pthread_t thread_id, int señal);

El método pthread kill () haría verificación de errores si el valor de la señal se estableció en 0, pero en realidad, no se ha proporcionado una señal a esta función para el hilo. La función devuelve cero cuando ha completado su trabajo. Si no, la función devuelve un error numérico. No se entrega una señal si el método PTHREAD Kill () falla. Si se produce cualquiera de los siguientes: no se puede descubrir ningún hilo que coincida con el indicado por el ID de subproceso suministrado; Un número de señal inválido o no autorizado es el valor del argumento de la señal.

Creemos un archivo de programación C para comprender la función pthread_kill (). Al usar el comando VIM, tenemos que crear un archivo de código y guardar el archivo como pthread_kill.C. Para obtener el resultado deseado, escriba el comando posterior en la pantalla.

Aquí está el fragmento de código; En las primeras líneas de código, incluimos los archivos de encabezado. Simplemente imprimimos el mensaje del hilo que ahora se ejecuta en el método display_output. Hemos declarado una variable de tipo entero en la función principal para detectar el estado del subproceso. La variable num se ha inicializado y el método de creación de hilos se ha pasado. PThread t se usa para identificar distintivamente el hilo. Luego, utilizando el método de creación de pTHread, generamos un hilo. En caso de falla, vea si este método devuelve un valor que es inferior a 0, lo que indicaría que el proceso de creación de hilos falló.

Después de eso, el hilo se pone a dormir durante dos segundos llamando al método de sueño. Luego se ha invocado el procedimiento de matar PTHREAD, y la identificación del hilo y la señal Sigusr1 se han pasado a él. El uso de señales Sigusr1 y SigusR2 depende de los requisitos del usuario. Si implementa un controlador de señal para ellos en la aplicación que recibe la señal, son particularmente útiles durante la comunicación entre procesos. La siguiente línea realiza una verificación condicional que confirmará si el proceso de asesinato de hilo falló y si se imprimió un mensaje de error utilizando la instrucción Perror. En caso de éxito, hemos llamado al método pthread_Join, que ofrece un mecanismo directo que permite que una aplicación espere a que termine un hilo. Más tarde verificamos si este proceso no pudo imprimir un mensaje de error.

Cierre el editor VIM después de ingresar el código presionando la tecla de escape y el comando: x. Compile el código después de eso utilizando un compilador C de su elección, asegurándose de que produzca el archivo de salida deseado. Para construir el código, escriba los comandos que se muestran a continuación. Cualquier error se mostrará en la pantalla del terminal si ocurren. No aparecerá nada en la pantalla después de una compilación exitosa.

Ejecute el archivo de salida para ver el mensaje que el hilo se está ejecutando, lo que indica que no hubo errores después de llamar a la función de hilo para matar y que todo salió bien de la creación de hilo a través de las funciones de unión de hilo de hilo. Para obtener el resultado deseado, escriba el comando posterior en la pantalla.

Hagamos algunos cambios en el código, así que escriba el comando VIM junto con el nombre del archivo C. Para obtener el resultado deseado, escriba el comando posterior en la pantalla.

La declaración condicional después de la modificación del método de unión de subprocesos, donde verificamos para ver si el método de unión de subprocesos había establecido la variable de estado de subproceso en mayor o igual a 1, que indica una operación exitosa, está ausente de las líneas de código a continuación. Si esto es exitoso, mostraremos un mensaje en la pantalla que dice: "Hilo que se une exitoso.". Otro cambio menor en el código es que la función Thread_Kill ahora se coloca después de la declaración condicional de la función Thread_Join. Esto significa que la comunicación entre procesos ahora tendrá lugar después de la función Thread_Join.

Para actualizar el archivo de salida, recompire el código. Este comando compilará el archivo C que contiene el código de subproceso. Para obtener el resultado deseado, escriba el comando posterior en la pantalla.

Ejecute el código ahora y verá que imprimió con éxito el método de unión de hilo en la pantalla. La ejecución del subproceso se muestra antes de la llamada a la función de salida de visualización. Para obtener el resultado deseado, escriba el comando posterior en la pantalla.

Conclusión

Se trata de la demostración de una función pthread_kill () de C para solicitar una señal dirigida al hilo elegido. Hemos discutido un ejemplo detallado de C utilizando la función pthread_kill dentro de ella para enviar una señal a un método particular cuando se trata de la terminación de una función de llamada. Esto se trata de pthread_kill. Espero que te guste.