Comment puis-je gérer SIGCHLD?
J'ai besoin de manipuler des SIGCHLD
correctement. Comment puis-je l'utiliser avec mon code existant. pour le moment, je ne peux pas attendre pour le processus de l'enfant, à moins que j'utilise 0
au lieu de WNOHANG|WUNTRACED
.
status = 0;
pid_t child, endID;
if(amp == 1)
signal( SIGCHLD, SIG_IGN );
child = fork();
if (child < 0) {
perror("fork() error\n");
exit(EXIT_FAILURE);
} else if (child == 0) {
//do sth here
perror("error\n");
} else {
//sleep(1)
Si je supprime sleep
ensuite parent est exécuté le 1er.. pourquoi?
Qu'essayez-vous de réaliser ?
Permettre le mélange de fond et les processus de premier plan par l'écriture et l'installation d'un bon gestionnaire de signal fonction
Quel doit être le gestionnaire de signal ?
tue ou qu'il l'ignore zombies
Cela semble être lié à une Exemple de
Permettre le mélange de fond et les processus de premier plan par l'écriture et l'installation d'un bon gestionnaire de signal fonction
Quel doit être le gestionnaire de signal ?
tue ou qu'il l'ignore zombies
Cela semble être lié à une Exemple de
waitpid()
, WNOHANG
, et SIGCHLD
.
OriginalL'auteur kanoz | 2011-08-24
Vous devez vous connecter pour publier un commentaire.
Ici est un début (mais lire ci-dessous):
De sûr, c'est inutile. Si le parent ignore simplement
SIGCHLD
, les enfants sont silencieusement tiré et ne pas se transformer en zombies.Citant TLPI:
Donc quelque chose comme cela devrait faire l'affaire pour vous:
Lire le dernier paragraphe 🙂
Viens de tomber sur cette question parce que j'avais besoin pour gérer SIGCHLD, et je ne trouve pas ça très clair quant à la ligne, vous nous avez donné doit être appelé. Comme il n'a pas besoin pid ou quoi que ce soit je viens de le mettre n'importe où, est-il juste? Merci @cnicutar.
Quelque part avant de commencer à la fourchette.
Comme vous l'avez dit: la définition Explicite de la disposition de SIGCHLD à SIG_IGN causes de tout processus enfant qui par la suite se termine à être immédiatement retiré du système, au lieu d'être converti en un zombie. Comment pouvez vérifier & prévenir cette situation? Je pense que cette chose qui se passe dans mon cas?
OriginalL'auteur cnicutar