Что означает код errno 7 (E2BIG)?

 
Также может означать:
КонстантаТипОС
ERROR_ARENA_TRASHEDОшибка WindowsWindows
KERN_NOT_RECEIVERКод возврата ядра macOSmacOS
ippStsLnZeroArgСтатус Intel IPPЛюбая
INVALID_SOFTWARE_INTERRUPTКод BSODWindows
Предыдущий Следующий
ENXIO ENOEXEC

E2BIG

Что именно оказалось слишком большим

E2BIG обычно возникает при вызове функций семейства exec. Код относится к суммарному объёму массива аргументов и окружения, а не просто к «слишком большому числу параметров командной строки». Ошибку может вызвать один очень длинный аргумент, необычно большое окружение или чрезмерно длинный путь к исполняемому файлу. В Linux применимый предел зависит в том числе от ограничения стека процесса, а ядро дополнительно ограничивает длину отдельных строк.

На практике E2BIG часто появляется, когда программа разворачивает большой список путей в одну команду, помещает структурированные данные в переменные окружения либо напрямую передаёт подпроцессу длинный результат сборки, развёртывания или поиска.

Как изменить способ вызова

  • Передавайте большой объём данных через файл, канал, сокет или стандартный ввод, а не через один огромный список аргументов.
  • Разбивайте работу на ограниченные по размеру пакеты и отдельно обрабатывайте код завершения каждого пакета.
  • Измеряйте размер и argv, и наследуемого окружения: скрытая большая переменная окружения может оказаться решающей.
  • Ориентируйтесь на документированные правила конкретной платформы и не переносите предел с одной UNIX-подобной системы на другую без проверки.

Ссылки


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