LINUX.ORG.RU

проблема с семафорами SysV


0

0

Основной процесс может форкнуть N потомков, каждый раз перед созданием нового процесса происходит уменьшение семафора, а когда потомок завершился обработчик сигнала CHLD увиличивает семафор.
Так вот, когда потомок завершает работу и если на функции уменьшения семафора основной процесс заснул, то основной процесс возвращается из сна с ошибкой после обработки сигнала. Есть ли решение проблемы? Спасибо.

P.S. программа на perl'е

Кроме того, если потомок сам уменьшает значения семафора, проблема остается прежней.

anonymous

Уж не спамер ли пишешь? ;)
Если да, то забей на перл

anonymous
()

RE:

Не знаю насколько здоровая идея, но если проблема лишь в том, что не хочется отдельно обрабатывать EINTR, то может стоит повесить SIGCLD handler с флажком SA_RESTART? (man sigaction).

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.