Родительский процесс должен отслеживать смерть
своих детей, для этого регистрирую обрабочик
для 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)