linux中的8K堆栈大小

linux中的8K堆栈大小,linux,Linux,我想在linux系统(Fedora18)中运行一个进程,该进程内部有7个线程,每个线程的堆栈大小为8K 在运行进程之前,我在终端中发出了以下命令 $ulmit -s 8 //Want to run my process and its threads each with 8K stack size $./a.out // I started my process 这个命令系统挂断了,没有反应。但是当我发出命令时 $ulimit -s 16 //MY process successful

我想在linux系统(Fedora18)中运行一个进程,该进程内部有7个线程,每个线程的堆栈大小为8K

在运行进程之前,我在终端中发出了以下命令

$ulmit -s 8   //Want to run my process and its threads each with 8K stack size

$./a.out  // I started my process
这个命令系统挂断了,没有反应。但是当我发出命令时

$ulimit -s 16 //MY process successfully started.
当我尝试使用8K时,在设置8K之前,我已将
PTHREAD_STACK_MIN
(in/usr/include/bits/local_lim.h)值更改为8192,默认值为16384


我们可以用8K堆栈大小运行该进程吗?有下限吗?还是我的进程中任何消耗超过8K堆栈大小的线程?

PTHREAD\u stack\u MIN不应设置得太低。在启动时,进程将调用libc函数来启动线程并运行程序。将系统中的大小减小到默认大小以下不是一个好主意。堆栈最小值不仅仅适用于函数中的变量。它还用于进程/线程启动时发生的系统调用

ulimit堆栈仅适用于主线程的堆栈,而不适用于所创建的任何线程。为什么要尝试运行小于
PTHREAD\u STACK\u MIN
的线程?这是进入线程例程所需的假定最小大小。