Что означает код errno 16 (EBUSY)?

 
Также может означать:
КонстантаТипОС
ERROR_CURRENT_DIRECTORYОшибка WindowsWindows
KERN_INVALID_TASKКод возврата ядра macOSmacOS
ippStsZeroOccСтатус Intel IPPЛюбая
SPIN_LOCK_NOT_OWNEDКод BSODWindows
Предыдущий Следующий
ENOTBLK EEXIST

EBUSY

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

EBUSY означает, что система не может изменить состояние объекта, пока тот используется. Конкретная причина определяется API. Переименование может затронуть каталог, являющийся рабочим каталогом процесса, либо точку монтирования. Эксклюзивное открытие блочного устройства не удастся, если устройство уже занято. Удаление пути может блокироваться активным монтированием или представлением файловой системы.

Поэтому нельзя автоматически трактовать EBUSY как обычную ошибку блокировки. Объект может быть смонтирован, использоваться как рабочий каталог, удерживаться драйвером или защищаться диспетчером ресурсов. Принудительный повтор создаёт гонку с компонентом, который законно использует ресурс.

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

  • Определите точный тип ресурса и операцию, вернувшую код.
  • Проверьте состояние монтирования, потребителей устройства, рабочие каталоги процессов, открытые дескрипторы и владельца-службу.
  • Перед разрушительной операцией согласуйте остановку или размонтирование с компонентом-владельцем.
  • В приложении отображайте «ресурс занят» как отдельное состояние и применяйте ограниченные повторы только там, где это допускает контракт API.

Ссылки


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