Яка максимальна довжина аргументів командного рядка в gnome-terminal?
... а чи існує змінна системного середовища, яка повідомляє про це значення?
Яка максимальна довжина аргументів командного рядка в gnome-terminal?
... а чи існує змінна системного середовища, яка повідомляє про це значення?
Відповіді:
xargs
знає. У моїй системі,
$ xargs --show-limits
Your environment variables take up 2572 bytes
POSIX upper limit on argument length (this system): 2092532
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2089960
Size of command buffer we are actually using: 131072
xargs
це не лише для повідомлення про обмеження, це також (в першу чергу) для роботи над ним - див. Сторінку "man" або іншу документацію.
xargs --show-limits --no-run-if-empty < /dev/null 2>&1 |sed -n "/could actually use/s/.*: \\([0-9]\+\\)/\1/p"
Відповідь виходить зі значення sysconfARG_MAX
. Щоб переглянути його у вашій системі:
getconf ARG_MAX
Для мене це повідомляє 2097152
. Для отримання більш детальної інформації перегляньте сторінку сторінки:
man sysconf
Щоб отримати це всередині програми, наприклад:
#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));
Я насправді не знаю про gnome-термінал, але оболонка має не "фіксований" межа, а межа стека.
Однак є обмеження на аргумент жорсткого коду, що становить 128 КБ, це не повинно бути проблемою, якщо ви не використовуєте "дуже дуже дуже довгі аргументи ....".
Детальніше про це ви можете прочитати тут: