| Предыдущий | Следующий |
| ENXIO | ENOEXEC |
E2BIG
Что именно оказалось слишком большим
E2BIG обычно возникает при вызове функций семейства exec. Код относится к суммарному объёму массива аргументов и окружения, а не просто к «слишком большому числу параметров командной строки». Ошибку может вызвать один очень длинный аргумент, необычно большое окружение или чрезмерно длинный путь к исполняемому файлу. В Linux применимый предел зависит в том числе от ограничения стека процесса, а ядро дополнительно ограничивает длину отдельных строк.
На практике E2BIG часто появляется, когда программа разворачивает большой список путей в одну команду, помещает структурированные данные в переменные окружения либо напрямую передаёт подпроцессу длинный результат сборки, развёртывания или поиска.
Как изменить способ вызова
- Передавайте большой объём данных через файл, канал, сокет или стандартный ввод, а не через один огромный список аргументов.
- Разбивайте работу на ограниченные по размеру пакеты и отдельно обрабатывайте код завершения каждого пакета.
- Измеряйте размер и
argv, и наследуемого окружения: скрытая большая переменная окружения может оказаться решающей. - Ориентируйтесь на документированные правила конкретной платформы и не переносите предел с одной UNIX-подобной системы на другую без проверки.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
