Что означает код errno 10 (ECHILD)?

 
Также может означать:
КонстантаТипОС
ERROR_BAD_ENVIRONMENTОшибка WindowsWindows
KERN_MEMORY_ERRORКод возврата ядра macOSmacOS
ippStsJPEGMarkerСтатус Intel IPPЛюбая
IRQL_NOT_LESS_OR_EQUALКод BSODWindows
Предыдущий Следующий
EBADF EAGAIN

ECHILD

Что означает состояние процесса

ECHILD возвращается функциями семейства wait, когда для запроса нет подходящего дочернего процесса, статус которого ещё не был получен. Для waitpid() или waitid() выбранный процесс может не существовать, не быть дочерним для вызывающего либо уже быть обработанным другой ветвью ожидания. Ожидаемая связь родитель–потомок может также измениться, если управление процессами передано супервизору или среде выполнения.

Это не означает «дочерний процесс всё ещё работает». Неблокирующий вызов в таком случае обычно успешно возвращается без изменения состояния — в соответствии с конкретным API и флагами. ECHILD сообщает именно об отсутствии доступного статуса дочернего процесса для указанного отбора.

Как расследовать

  • Сохраняйте PID, полученный от функции создания процесса, и явно назначайте компонент, который должен собрать его статус.
  • Проверьте, не вызвал ли wait обработчик сигнала, фреймворк или параллельная ветвь управления.
  • Проверяйте запрошенный PID и отношение родительства, не воспринимая PID как глобально принадлежащий приложению дескриптор.
  • Организуйте завершение так, чтобы статус каждого дочернего процесса собирал ровно один владелец и сохранял его результат.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.