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 waitpid(), WNOHANG, et SIGCHLD.

OriginalL'auteur kanoz | 2011-08-24