Vous voudrez peut-être communiquer des messages entre les processus dans les circonstances suivantes: une fois une tâche terminée, le processus d'enfant qui a été lancé par le processus parent est résilié. Le processus d'enfant a peut-être exécuté une boucle infinie. Lorsqu'un échec ou un autre événement comme une impasse, un processus qui fait partie d'un groupe doit arrêter ou signaler les autres processus au sein du groupe. En coordonnant, deux processus doivent se synchroniser en utilisant cette fonction. Par exemple, un thread pourrait l'utiliser pour influencer la façon dont un signal est diffusé à un groupe d'autres threads. Suivant ci-dessous est la syntaxe de la fonction pthead_kill () de c. Signal.Le fichier d'en-tête H est utilisé car toutes ces fonctions sont définies à l'intérieur de ce fichier d'en-tête.
#inclureLa méthode pthread kill () ferait une vérification des erreurs si la valeur du signal était définie sur 0, mais en réalité, aucun signal n'a été fourni à cette fonction pour le thread. La fonction renvoie zéro lorsqu'il a terminé son travail. Sinon, une erreur numérique est renvoyée par la fonction. Aucun signal n'est délivré si la méthode Pthread Kill () échoue. Si l'un des éléments suivants se produit: aucun thread ne peut être découvert correspondant à celui indiqué par l'ID de thread fourni; Un nombre de signal non valide ou non autorisé est la valeur de l'argument du signal.
Créons un fichier de programmation C pour comprendre la fonction pthread_kill (). En utilisant la commande VIM, nous devons créer un fichier de code et enregistrer le fichier en tant que pthread_kill.c. Pour obtenir le résultat souhaité, tapez la commande suivante à l'écran.
Voici l'extrait de code; Dans les premières lignes de code, nous avons inclus les fichiers d'en-tête. Nous imprimons simplement le message du fil qui s'exécute maintenant dans la méthode Display_Output. Nous avons déclaré une variable de type entier dans la fonction principale pour détecter l'état du thread. La variable NUM a été initialisée et la méthode de création de thread a été transmise. Pthread t est utilisé pour identifier distinctement le fil. Ensuite, en utilisant la méthode Pthread Create, nous avons généré un fil. En cas d'échec, voyez si cette méthode renvoie une valeur inférieure à 0, ce qui indiquerait que le processus de création de thread a échoué.
Après cela, le fil est endormi pendant deux secondes en appelant la méthode de sommeil. La procédure Pthread Kill a ensuite été invoquée, et l'ID de thread et le signal SIGUSR1 y ont été transmis. L'utilisation des signaux SIGUSR1 et SIGUSR2 dépend des exigences de l'utilisateur. Si vous implémentez un gestionnaire de signaux pour eux dans l'application qui reçoit le signal, ils sont particulièrement utiles pendant la communication interprète. La ligne suivante effectue une vérification conditionnelle qui confirmera si le processus de mise à mort de thread a échoué et si un message d'erreur a été imprimé à l'aide de l'instruction Perror. En cas de succès, nous avons appelé la méthode PTHREAD_JOIN, qui offre un mécanisme simple qui permet à une application d'attendre que un fil termine la fin. Plus tard, nous avons vérifié si ce processus n'a pas imprimé un message d'erreur.
Fermez l'éditeur VIM après être entré dans le code en frappant la touche d'échappement et la commande: x. Compilez le code après cela en utilisant un compilateur C de votre choix, en vous assurant qu'il produit le fichier de sortie souhaité. Pour créer le code, saisissez les commandes ci-dessous. Toutes les erreurs seront affichées sur l'écran du terminal s'ils se produisent. Rien n'apparaît à l'écran après une compilation réussie.
Exécutez le fichier de sortie pour voir le message que le thread exécute, indiquant qu'il n'y avait pas d'erreurs après avoir appelé la fonction du thread pour tuer et que tout s'est bien passé de la création de threads via le thread Kill à Fonction. Pour obtenir le résultat souhaité, tapez la commande suivante à l'écran.
Faisons quelques modifications dans le code, alors tapez la commande VIM avec le nom du fichier C. Pour obtenir le résultat souhaité, tapez la commande suivante à l'écran.
L'instruction conditionnelle suivant la modification de la méthode des jointures threads, où nous avons vérifié si la méthode de jointure de thread avait défini la variable d'état du thread à supérieure à ou égal à 1, indiquant une opération réussie, est absente des lignes de code ci-dessous. Si cela réussit, nous afficherons un message à l'écran qui dit: «Le fil de discussion a réussi.". Un autre changement mineur dans le code est que la fonction thread_kill est maintenant placée après l'instruction conditionnelle de la fonction thread_join. Cela signifie que la communication inter-processus aura maintenant lieu après la fonction thread_join.
Pour mettre à jour le fichier de sortie, recompilez le code. Cette commande compilera le fichier C qui contient le code de thread. Pour obtenir le résultat souhaité, tapez la commande suivante à l'écran.
Exécutez le code maintenant et vous verrez qu'il a réussi à imprimer la méthode de jointure de thread à l'écran. L'exécution du thread s'affiche avant l'appel à la fonction de sortie d'affichage. Pour obtenir le résultat souhaité, tapez la commande suivante à l'écran.
Conclusion
Il s'agit de la démonstration d'une fonction pthread_kill () de C pour demander qu'un signal soit dirigé vers le thread choisi. Nous avons discuté d'un exemple détaillé de C en utilisant la fonction pthread_kill à l'intérieur pour envoyer un signal à une méthode particulière en ce qui concerne la résiliation d'une fonction d'appel. Il s'agit de pthread_kill. J'espère que vous aimez.