Как изменить размер стека, используя ulimit или на процесс в Mac OS X для программы на C или Ruby?
Кажется, что рекомендуемый способ установить размер стека для программы C или Ruby (которая использует стек C), это с помощьюulimit
в оболочке Bash. Но
$ ulimit -s
8192
$ ulimit -s 16384
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
а такжеsudo
тоже не помогает Есть ли способ установить его на 16 МБ, 32 МБ или 64 МБ? Я думал, что должен быть способ установить его для каждого вызова программы вместо установки общесистемного параметра?
Прямо сейчас8192
вероятно, означает 8 МБ, что довольно мало, если сравнивать с тем, сколько процесс может использовать, иногда до 2 ГБ ОЗУ.
(обновленная заметка: ulimit -a
может показать его текущие значения).
(обновление 2: это на самом деле кажетсяulimit -s <value>
для каждой оболочки, и что, если вы установите его в первый раз, он обычно работает. Проблема в том, что если вы установите его во второй раз, то он может вернуть ошибку)