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水木清华站∶精华区