linux下,进程的堆栈大小到底是OS决定的还是编译器决定的?
如果是OS决定的,所有进程堆栈大小应该都是一样的吧?
但是clone函数
int clone(int (*fn)(void *), void *child_stack, int flags, void *arg)
又可以在运行时决定堆栈的大小,这似乎不是系统规定好的。
如果是编译器在链接的时候决定的,那么就应该不能动态修改啊。如何解释clone函数可以设定堆栈大小呢?
谢谢!
------解决方案--------------------Windows下,对于VC编译器,据说是链接的时候指定的。
------解决方案--------------------ulimit -s xx
------解决方案--------------------系统肯定有默认的堆栈大小,但是用户在创建进程时,也是可修改的。