2014-12-18 2 views
1

Я понимаю, что переменные окружения и аргументы командной строки хранятся в верхней части стека. Я подтвердил, что печатаю адрес argv и env.RLIMIT_STACK, включая переменные окружения и аргументы командной строки или эксклюзивные

Я также понимаю, что существует ограничение на размер стека для процесса, который мы можем печатать с использованием ulimit -s или используя функцию getrlimit с RLIMIT_STACK в качестве первого аргумента.

Но некоторые тексты показывают переменные среды и аргументы командной строки, как если бы они были сохранены в некоторых отдельных частях схемы виртуальной памяти.

Мой вопрос: ли лимит на стек применяется к фактическому стеку программ, исключая переменные окружения и аргументы командной строки или включительно?

ответ

3

Это отвечает в documentation:

RLIMIT_STACK 
... 
    Since Linux 2.6.23, this limit also determines the amount of space used for the 
    process's command-line arguments and environment variables. 
+0

Попытка установить 'rlimit_stack' после [Stack Clash] (http://www.openwall.com/lists/oss-security/2017/06/19/1) исправления могут привести к сбою или смежным проблемам. Также см. Red Hat [Issue 1463241] (https://bugzilla.redhat.com/show_bug.cgi?id=1463241) – jww

Смежные вопросы