n1ro°
RU

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

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

Операция требовала отсутствия объекта, но объект с таким именем уже существует.

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

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

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

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

Операция требовала отсутствия объекта, но объект с таким именем уже существует.

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

  • mkdir/open(O_EXCL)/link пытается создать уже существующее имя.
  • Параллельный процесс успел создать объект раньше.
  • Повторный запуск не учитывает уже созданный ресурс.

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

  • Проверьте конкретный объект, существовавший в момент EEXIST.
  • Определите, допустим ли существующий объект по контракту операции.
  • Исключите гонку между предварительной проверкой exists и атомарным create.

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

  1. Обрабатывайте EEXIST как ожидаемый результат для идемпотентного create, если это безопасно.
  2. Используйте атомарные флаги создания вместо check-then-create.
  3. Не удаляйте существующий объект автоматически, пока не проверено его назначение.

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

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

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

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

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

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

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

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

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