操作系统的中打开文件的最大句柄数

LINUX系统中:

1、使用/proc文件系统来控制系统/proc/sys/fs
/proc/sys/fs/file-max
该文件指定了可以分配的文件句柄的最大数目。如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。可将这个值设置成有任意多个文件,并且能通过将一个新数字值写入该文件来更改该值。

缺省设置:4096

2、/proc/sys/fs/file-nr
该文件与 file-max 相关,它有三个值: 
已分配文件句柄的数目
已使用文件句柄的数目
文件句柄的最大数目
该文件是只读的,仅用于显示信息。

所以不存在两个文件的配合修改问题,主要修改file-max就行了。

3、ulimit -a中

open files                    (-n) 1024

也即是ulimit -n

-n     The maximum number of open file descriptors (most systems
                     do not allow this value to be set)

ulimit -n <可以同时打开的文件数> 设置用户可以同时打开的最大文件数(max open files) 

  例如:ulimit -n 8192    

  如果本参数设置过小,对于并发访问量大的网站,可能会出现too many open files的错误 

 

Windows系统中:

Windows 下面程序的值是509,加上 <stdio> 和 <stdout> 和 <stderr> 文件句柄,系统这个值应该是512。其他的windows系统如果需要可以用跑一下下面的代码试一下。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int FILE_MAX = 0;
	FILE* fp = NULL;
	while (1)
	{
		fp = fopen("temp.txt", "r");
		if (fp == NULL)
		{
			break;
		}
		FILE_MAX++;
	}
	printf("FILE_MAX = %d\n", FILE_MAX);

	exit(0);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章