Как я могу обрабатывать SIGCHLD?

Мне нужно правильно обработать SIGCHLD . Как я могу использовать его с моим существующим кодом? в настоящий момент я не могу дождаться дочернего процесса, если не использую 0 вместо 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)

Если я удалю sleep , то родительский элемент будет выполнен первым .. почему?

12
задан Marco Bonelli 15 November 2019 в 23:19
поделиться