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