n1ro°
RU

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

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

Ресурс временно недоступен; операция может стать возможной позже.

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

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

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

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

Ресурс временно недоступен; операция может стать возможной позже.

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

  • Неблокирующий fd сейчас не готов к операции.
  • Создание процесса/потока упёрлось во временный лимит ресурсов.
  • Очередь или kernel resource временно не может принять запрос.

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

  • Определите системный вызов: смысл EAGAIN зависит от операции.
  • Для nonblocking I/O проверьте готовность через poll/epoll/select.
  • Для fork/thread creation проверьте process/thread limits и давление на память.

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

  1. Используйте ожидание готовности вместо busy-loop для nonblocking I/O.
  2. При ресурсном лимите уменьшите параллелизм или освободите ресурс.
  3. Добавляйте bounded backoff только для действительно временных условий.

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

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

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

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

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

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

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

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

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