comment tuer un processus enfant lors de l'envoi d'une interruption avec un raccourci clavier, puis envoyer un signal au parent indiquant que le processus enfant a été supprimé?accusé de réception de signal
Répondre
Le processus parent reçoit généralement un signal chaque fois qu'un enfant meurt malgré tout. C'est le signal SIGCHLD.
Ce signal peut être bloqué par le processus parent, mais dans le cas contraire, il est toujours délivré lorsqu'un enfant quitte pour une raison quelconque. Le parent peut dire pourquoi l'enfant est sorti en utilisant l'une des wait
famille (aka wait
, wait3
, wait4
, ou waitpid
) pour récolter le code retour.
Il peut être difficile de faire en sorte que le processus enfant ait le focus, afin qu'il reçoive des événements clavier.
Vous pouvez toujours utiliser la commande kill
pour envoyer un signal à un processus donné. Ne laissez pas le nom tuer vous tromper, vous pouvez envoyer un signal avec kill, kill -SIGNUM pid
, mais SIGTERM est la valeur par défaut, ce qui provoque généralement un processus de quitter.
Donc, si vous voulez envoyer un signal SEGV pour traiter 11 que vous feriez
kill -SEGV 11
Vous pouvez configurer le parent pour attraper un signal, le renvoyer à l'enfant via un appel à tuer (2), puis attendez que l'enfant sorte en utilisant waitpid.
gestionnaire de signal du parent aimerait quelque chose comme ceci:
int status;
kill(child_pid, SIG_TO_SEND);/*send to child*/
waitpid(child_pid, &status);/* wait for child to give up */
Si vous étiez sérieux au sujet de garder le parent et je savais que le signal était seulement pour l'enfant que vous auriez probablement définir une variable dans le parent, sortez du gestionnaire de signal, puis faites le travail d'envoyer et d'attendre l'enfant. En général, il est bon de sortir des gestionnaires de signaux le plus rapidement possible.
- 1. Envoi du courrier avec accusé de réception?
- 2. javascript, devoirs, validation de formulaire, accusé de réception
- 3. Signal de réception de programme: "0"
- 4. Le contenu d'un accusé de réception d'e-mail peut-il être défini dans l'e-mail d'origine?
- 5. Accusés de réception et confirmation de réception dans le courrier PHP
- 6. Comment puis-je expirer une clé de cache de modèle django à la réception d'un signal?
- 7. Signal de réception du programme: "0". Avertissement: check_safe_call: ne peut pas restaurer cadre actuel
- 8. signal de temporisation glibmm
- 9. Gestionnaire de signal, python
- 10. QTableView signal de tri?
- 11. Problème de signal pyqt
- 12. Sockets de réception flash
- 13. Réception de messages de diffusion
- 14. Connexion à un signal masqué par QMessageBox
- 15. Comment envoyer des emails avec des accusés de réception dans Ruby on Rails?
- 16. Qt - aucune erreur de signal
- 17. Aucun signal readyReadStandardOutput de QProcess
- 18. Signal d'envoi DBus Glib - Aucun signal émis
- 19. recvfrom problème de réception infinie
- 20. réception de données depuis javascript
- 21. MSMQ - Délai d'attente de réception
- 22. Boîte de réception Android Access
- 23. afficher la boîte de réception?
- 24. Est-il possible de configurer une connexion série pour lancer un programme à la réception du signal RD?
- 25. Gtk_entry signal de clic de souris
- 26. Signal de changement de texte GtkEntry
- 27. Routine de réception correspondante de MPI_Bcast
- 28. À l'exclusion de l'appel du signal d'amplification
- 29. Qt signal à l'emplacement de l'objet spécifique
- 30. Signal/Slot vs appels de fonction directe