- 论坛徽章:
- 0
|
本帖最后由 seaquester 于 2011-01-18 15:13 编辑
如果是这样,那么在32位系统下,linux系统最大单个进程打开的文件数量是也不是65535。
你可以测试一下,具体最大是多少,我还没有试出来:
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <errno.h>
- #include <sys/types.h>
- #include <sys/resource.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #define MAX_FILES 65550
- int main()
- {
- struct rlimit r_limit, local_rlimit;
- int n;
- int rc;
- char buf[260];
- /* Get file open number limit */
- getrlimit(RLIMIT_NOFILE, &local_rlimit);
- printf("Current file_open_number limit: soft=%ld, hard=%ld\n",
- local_rlimit.rlim_cur, local_rlimit.rlim_max);
- /* Set file open number limit */
- printf("\n");
- r_limit.rlim_cur = MAX_FILES;
- r_limit.rlim_max = MAX_FILES;
- printf("Setting a file_open_number limit: soft=%ld, hard=%ld\n",
- r_limit.rlim_cur, r_limit.rlim_max);
- if (setrlimit(RLIMIT_NOFILE, &r_limit) == -1) {
- printf("FAIL\n");
- return 1;
- }
- printf("SUCCESS\n");
- getrlimit(RLIMIT_NOFILE, &local_rlimit);
- printf("Current NOFILE limit: soft=%ld, hard=%ld\n",
- local_rlimit.rlim_cur, local_rlimit.rlim_max);
- for (n = 1; n <= MAX_FILES; n++) {
- sprintf(buf, "/tmp/%08d.tmp", n);
- rc = open(buf, O_WRONLY | O_CREAT, 0644);
- if (rc < 0) {
- printf("open file %d error\n", n);
- return 2;
- } else {
- printf("open file %d OK\n", n);
- }
- }
- return 0;
- }
复制代码 |
|