Почему в данном коде, когда все форки прекращают свою работу, основная функция так же прекращает работу, несмотря на sleep(10)? Если этот sleep(10) заменит с помощью infinity loop (for(;;){}) -- такого не происходит. Что прерывает sleep(10), и не прерывает цикл? Спасибо. void fork_handler(int num) { (void)waitpid(-1, NULL, WNOHANG); } void doSmthAgain() { pid_t p = fork(); if ((int)p > 0) return; printf("child (%ld) is doing smth =)\n", (long int)getpid()); sleep(5); printf("child (%ld) has done smth =)\n", (long int)getpid()); exit(1); } int main(int argc, char** argv) { signal(SIGCHLD, fork_handler); doSmthAgain(); doSmthAgain(); sleep(10); return 0; }
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум fork() (2020)
- Форум [fork()+getpid()] Мааа...ленький вопросик (2008)
- Форум fork(), exec(), wait() (2020)
- Форум fork + popen. Залипание на wait при SIGCHLD (2019)
- Форум продолжить работу после обработки signal (2007)
- Форум Как ждать окончания процесса поражденного clone() ???? (2003)
- Форум POSIX таймеры (2011)
- Форум Критическая секция (2008)
- Форум Помогите разобраться с потоками (2003)
- Форум Помогите разобраться с программой! (2020)