L'envoi de SIGSTOP à un enfant de processus s'arrête tout d'exécution. C
Quand je l'appelle kill(Child_PID, SIGSTOP);
de la société mère, j'attends de l'enfant pour interrompre l'exécution et le parent de continuer. C'est que le comportement attendu ou dois-je déclarer explicitement le SIGSTOP gestionnaire de l'enfant? J'ai cherché partout et n'a pas été en mesure de trouver cette information.
Grâce.
Braden
J'ai couru à travers ce genre de problème. Essayez d'exécuter
ps
et voir si vraiment il s'est arrêté (Il devrait). Je soupçonne que vous devez ajouter WUNTRACED
dans votre waitpid()
pour détecter l'arrêté enfants à partir de votre processus principal.OriginalL'auteur Braden | 2010-10-03
Vous devez vous connecter pour publier un commentaire.
POSIX dit:
Ainsi, l'enfant n'a pas d'autre choix que d'arrêter - si le signal est envoyé avec succès. Et vous ne pouvez pas définir un SIGSTOP gestionnaire de l'enfant (ou d'un parent, ou tout autre processus.
c'est parce que vous avez utilisé
SIGSTOP
plutôt queSIGKILL
ou tout autre signal. c'est le comportement attendu.quoi d'autre avez-vous vous attendre? SIGSTOP dit "stop exécution; aller dans animation suspendue jusqu'à nouvel avis", où "avis" est une son état de signal (ou peut-être un signal SIGKILL).
J'ai été ce qui signifie que même le parent cessé de fonctionner après que le signal a été envoyé à l'enfant.
Est-il possible que
Child_PID
est0
de certaines raison (parce que ce serait envoyer le signal à tous les processus dans le processus actuel de groupe) ou négatif?OriginalL'auteur Jonathan Leffler
C'est le comportement attendu. Citant les pages de manuel unix:
Et BSD homme page mentionne que:
Conclusion, vous n'êtes pas autorisé à installer un gestionnaire pour SIGSTOP. Et le processus restera dans l'état suspendu jusqu'à réception d'un
SIGCONT
.OriginalL'auteur jweyrich
C'est le comportement attendu.
Utilisation
strace your_program
pour voir ce qui se passe.OriginalL'auteur Nicolas Viennot