- 论坛徽章:
- 0
|
在Solaris上测试如下的代码,后面是测试结果。当i=84时fopen()报错errno=24,即too many open files, 但其后的pipe()仍然能够成功,为什么?
使用“ulimit -a"命令可以看出"非文件(描述符) 10240"。
#include <unistd.h>;
#include <stdio.h>;
#include <stdlib.h>;
#include <errno.h>;
main()
{
//for (int i = 0; i < 256; i++)
int i = 0;
while(1)
{
int fildes[2];
int ret = pipe(fildes);
errno = -1;
printf ("i:%d,pipe() return:%d\n", i,ret);
FILE* fd = fopen("./test_pipe.cpp", "r" ;
printf ("fopen() return:%p, errno:%d\n", fd, errno);
usleep(10);
if (fd == NULL) break;
i++;
}
}
结果:
.
.
.
.
i:83,pipe() return:0
fopen() return:41f78, errno:-1
i:84,pipe() return:0
fopen() return:0, errno:24
i:85,pipe() return:0
fopen() return:0, errno:24
i:86,pipe() return:0
fopen() return:0, errno:24
.
.
. |
|