Родительский процесс должен отслеживать смерть своих детей, для этого регистрирую обрабочик для SIGCHLD //function for catch SIGCHILD void sig_child ( int sig_in) { fprintf ( stderr, "\none child dead :))\n"); child_count--; int status; wait4 ( &status); }; но если умарает два потомка пока родитель не работает то один из них превращается в зомби. Попытался использовать вместо wait wait4, но он входит в бесконечный цикл. //function for catch SIGCHILD void sig_child ( int sig_in) { fprintf ( stderr, "\none child dead :))\n"); child_count--; int status; pid_t pid = -1; struct rusage rsg; while ( wait4 ( pid, &status, WNOHANG, &rsg)) { child_count--; fprintf ( stderr, "\none child dead :))\n"); }; }; Подскажите в чем моя ошибка и как вообще решается такая проблема.


Ответ на:
комментарий
от Die-Hard

Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от Die-Hard

Ответ на:
комментарий
от Die-Hard

Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от Die-Hard

Ответ на:
комментарий
от cvv

Ответ на:
комментарий
от cvv

Ответ на:
комментарий
от cvv


Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от Die-Hard

Ответ на:
комментарий
от stalcker

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум fork(), exec(), wait() (2020)
- Форум fork + popen. Залипание на wait при SIGCHLD (2019)
- Форум fork() (2020)
- Форум создание дочерних процессов_ (2010)
- Форум Что имели в виду авторы? (2016)
- Форум Вопрос по FIFO (2014)
- Форум помогите разобраться (2005)
- Форум Уничтожение дочернего процесса (2004)
- Форум Поругайте «стража» дочерних процессов (2015)
- Форум Общие файлы, mmap - чтение (2015)