Waitpid в C ++ создает проблемы - PullRequest
1 голос
/ 24 января 2012

Я использую waitpid как задано

waitpid (childPID, & status, WNOHANG);

Используется в программе внутри бесконечного цикла, которая разветвляется при необходимостии родитель ожидает возврата дочернего процесса.Но недавно я столкнулся с проблемой, когда в программе происходит выход из программы после ее печати в cerr ..

waitpid: нет дочерних процессов

Это всегда последний журнализ программы, прежде чем она падает / выходит.Я знаю, что это не segfault или что-то еще, потому что у меня написана функция трассировки, которая печатает последние 10 адресов, к которым обращалась программа.Значит ли это, что программа вышла из цикла после обнаружения отсутствия дочернего процесса?Или здесь на работе что-то зловещее?

1 Ответ

0 голосов
/ 24 января 2012

Полагаю, что здесь происходит то, что системный вызов fork терпит неудачу из-за отсутствия доступных записей в таблице процессов. Вы можете сделать perror на выходе fork. Я думаю, что это должно быть RESOURCE_TEMPORARILY_UNAVAILABLE.

...