似乎在C程序或使用C堆栈的Ruby程序中设置堆栈大小的推荐方式是在Bash shell中使用ulimit
。但是
$ ulimit -s
8192
$ ulimit -s 16384
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
而且 sudo
也没什么帮助。有没有一种方法可以将它设置为16MB、32MB或64MB?我认为应该有一种方法可以针对每个程序调用进行设置,而不是设置系统范围的参数。
现在,8192
可能意味着8MB,这很小,如果与进程可以使用多达2GB的RAM相比较,那就更加明显了。
(更新注释: ulimit -a
可以显示其当前值)。
(更新2: 实际上,ulimit -s <value>
是在每个 shell 中设置的,如果第一次设置它通常会起作用。问题是当你第二次设置它时,它可能会返回一个错误)。
ulimit
的“硬限制”和“软限制”有关。参考链接:http://superuser.com/a/79719/153379。 - pje