BBS水木清华站∶精华区
发信人: r2506070@csie.ntu.edu.tw (Anmin Deng), 看板: linux
标 题: STACK SIZE in Linux
发信站: Nat'l Taiwan Univ..CSIE (Sun Jun 16 02:07:01 1996)
转信站: maple!news.ee.nthu!news.csie.nctu!netnews.ntu!r2506070
请看下列程式..
main()
{
char c[10000000];
c[0]=0;
}
执行结果.. Segmentation Fault!
经过一番明查暗访, 得知 linux 在 1.3.xx 版後, 将内定的
stack size 改成有 8M 的限制, 所以 local variable 一大,
或 call stack 太深时, stack 即 sigsegv. 我们可以在
tcsh 下用 "limit", bash 下用 "ulimit -a" 指令来查看.
身为 user, 我们无能去加大 stack size 的限制, 但身为 root,
可以在 tcsh 下用指令 "unlimit stacksize" 或 "limit stacksize xxxx",
在 bash 用指令 "ulimit -s xxxx" 或 "ulimit -s unlimited"
来加大stack. 如果 root 认为 stack 太大不会对系统造成伤害,
那麽可以在 /etc/initscript 档加上一排 bash 的指令来加大 stack..
ulimit -s xxxx 或 ulimit -s unlimited
如此每个 user 都可以执行上面那个程式了.
BBS水木清华站∶精华区