Ситуация такая: процесс устанавливает обработик SIGCHLD и запускает
процессы прсредством fork-exec. В этом обработчике делается wait() для того,
чтобы узнать pid завершившегося только что процесса. Запускается один
процесс, все срабатывает как нужно - pid определяется правильно. Но
затем вдруг происходит еще один вход в обработчик SIGCHLD, хотя
запроса на создание нового процесса не приходило, и wait()
повисает. Как такое может быть? Программа многотредовая, но я пробовал
выставлять флаг __WNOTHREAD в вызове waitpid(-1, &stat, FLAGS) -
результат тот же. Кроме того, я пробовал инсталлировать обработчик с
флажком SA_NOCLDSTOP - та же история. Больше я ничего придумать не
смог. В принципе, такая ситуация может случиться, если еще кто-то скажет
wait(), но никто больше в моей программе этого не делает.
В чем же может быть дело?
Заранее огромное спасибо!