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