n1ro°
RU

Ошибки · Решение

Linux errno ECHILD: что означает и как исправить

У вызывающего процесса нет дочернего процесса, которого можно ожидать указанным способом.

Редакция N1RO · Проверено

Короткий ответ

В Linux errno ECHILD означает «No child processes». Сначала найдите системный вызов, который вернул код, затем проверяйте условия именно этой операции. Числовое значение errno не следует считать переносимым между архитектурами: ориентируйтесь на символическое имя.

Что означает ошибка

У вызывающего процесса нет дочернего процесса, которого можно ожидать указанным способом.

Возможные причины

  • wait/waitpid вызывается после того, как child уже был собран другим участком кода.
  • Указанный PID не является дочерним для текущего процесса.
  • Настройка обработки SIGCHLD приводит к автоматическому удалению завершённых children.

Что проверить

  • Сопоставьте вызов waitpid с тем местом, где был создан child.
  • Проверьте, не конкурируют ли несколько потоков за ожидание одного PID.
  • Проверьте disposition SIGCHLD и используемые process supervisors.

Безопасные шаги

  1. Назначьте одному владельцу ответственность за reap каждого child.
  2. Не вызывайте wait повторно для уже собранного процесса.
  3. Согласуйте модель SIGCHLD с выбранным способом управления дочерними процессами.

Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.

Когда нужен сервис

  • Если errno ECHILD воспроизводится после проверки системного вызова и окружения, приложите strace-фрагмент, путь/ресурс и kernel log владельцу соответствующего subsystem.

Похожие ошибки

  • /errors/linux-errno-esrch/
  • /errors/linux-errno-eintr/
  • /errors/linux-errno-eio/

Что учитывать

Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.

Официальный источник

Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.