| Предыдущий | Следующий |
| EAGAIN | ENOMEM |
EAGAIN
Что означает EAGAIN в Windows UCRT
EAGAIN означает «Ресурс временно недоступен». Для условия «Ресурс временно недоступен» код EAGAIN нужно связывать с первым возвратившим его вызовом и контекстом: лимит процесса или системы, память, дескрипторы, блокировки и временное состояние.
Для условия «Ресурс временно недоступен» сначала установите канал ошибки: UCRT использует errno, Win32 API — GetLastError(), а Winsock — WSAGetLastError(); эти значения не взаимозаменяемы. Для EAGAIN исходная английская страница также выделяет errno, GetLastError, WSAE*, WSAGetLastError, WSAEWOULDBLOCK и UCRT; эти данные полезно записать вместе с return value, потоком и временем события.
Диагностика
- При ошибке «Ресурс временно недоступен» (Windows UCRT,
EAGAIN) снимите текущие rlimit, количество дескрипторов, память, блокировки и глубину очередей. - При ошибке «Ресурс временно недоступен» (Windows UCRT,
EAGAIN) отделите временную нехватку от утечки; retry с backoff допустим только для документированно временного условия. - При ошибке «Ресурс временно недоступен» (Windows UCRT,
EAGAIN) сохраните метрики до cleanup или повтора, иначе первичная причина исчезнет вместе с симптомом. - При ошибке «Ресурс временно недоступен» (Windows UCRT,
EAGAIN) проверьте освобождение ресурса на всех error paths и установите конечный предел повторов.
На платформе Windows UCRT исправление EAGAIN считается подтверждённым, когда исходная операция даёт ожидаемый результат, а отдельный отрицательный тест по-прежнему воспроизводит именно условие «Ресурс временно недоступен» без утечки ресурсов и потери первичной диагностики.
Ссылки для EAGAIN
Нужно найти другой код? Найти другой код состояния или ошибки.