Ситуация такая: процесс устанавливает обработик SIGCHLD и запускает
процессы прсредством fork-exec. В этом обработчике делается wait() для того,
чтобы узнать pid завершившегося только что процесса. Запускается один
процесс, все срабатывает как нужно - pid определяется правильно. Но
затем вдруг происходит еще один вход в обработчик SIGCHLD, хотя
запроса на создание нового процесса не приходило, и wait()
повисает. Как такое может быть? Программа многотредовая, но я пробовал
выставлять флаг __WNOTHREAD в вызове waitpid(-1, &stat, FLAGS) -
результат тот же. Кроме того, я пробовал инсталлировать обработчик с
флажком SA_NOCLDSTOP - та же история. Больше я ничего придумать не
смог. В принципе, такая ситуация может случиться, если еще кто-то скажет
wait(), но никто больше в моей программе этого не делает.
В чем же может быть дело?
Заранее огромное спасибо!
Ответ на:
комментарий
от Dead
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от idle
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Re: Вопрос к знатокам по waitpid и SIGCHLD. (2004)
- Форум Проблема с записью в pipe (2019)
- Статьи Как кушать вилкой. ... или о fork() в двух словах (2023)
- Форум wiatpid & SIGCHLD (2005)
- Форум fork && waitpid (2005)
- Форум sleep и SIGCHLD (2011)
- Форум Реакция на SIGCHLD (2006)
- Форум SIGCHLD + syslog = defunct? (2005)
- Форум Нюансы запуска процессов через system/exec (2020)
- Форум Некорректная работа учебной программы обработки сигналов (2012)