测试堆的大小
1 #include <unistd.h>
2 #include <stdio.h>
3 #include <string.h>
4 #include <stdlib.h>
5
6 int main()
7 {
8 int i = 1;
9 for(; ; ++i)
10 {
11 int *p = (int *)malloc(1024*1024);
12 if(p != NULL)
13 {
14 printf("%d\n",i);
15 }
16 else
17 {
18 break;
19 }
20 }
21 return 0;
22 }
结果为:3055,所以为3055个1M,说明一个进程最多可申请的堆大小大约为2.98G
测试管道的大小
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <string.h>
5
6
7
8
9 int main()
10 {
11 int pipefd[2];
12 char buf[4096] = {0};
13 pipe(pipefd);
14 int i;
15 for(i = 0; i<sizeof(buf); ++i)
16 {
17 buf[i] = 'a';
18 }
19
20 int j;
21 for(j = 0; ; ++j)
22 {
23 write(pipefd[1],buf,sizeof(buf));
24 printf("%d\n",j);
25 }
26
27 close(pipefd[0]);
28 close(pipefd[1]);
29 return 0;
30 }
运行结果为16,所以,管道的大小为64K;
查看栈的大小,ulimit -s//查看进程默认栈的大小;
可以通过ulimit -s +大小 改变栈的大小;
扩展:ulimit -c//查看core文件的大小;
ulimit -a //查看当前用户进程的各种限制;