操作系統的中打開文件的最大句柄數

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);
}

 

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