在典型的操作系统上,我可以使用标准C盘IO一次打开多少个文件?
我尝试读取一些应该告诉它的常量,但是在Windows XP 32位上,这是一个不可思议的20或者其他东西。虽然它似乎工作得很好,但是我还没有对它进行过广泛的测试。
我需要大约400个文件一次打开,所以如果大多数现代操作系统的支持,那将是非常棒的。它不需要支持XP,但应该支持Linux,Win7和最新版本的Windows服务器。
另一种方法是编写我自己的迷你文件系统,如果可能的话我想避免。
答案 0 :(得分:3)
进程可以使用getrlimit system-call来查询限制。
#include<sys/resource.h>
struct rlimit rlim;
getrlimit(RLIMIT_NOFILE, &rlim);
printf("Max number of open files: %d\n", rlim.rlim_cur-1);
答案 1 :(得分:2)
在Linux上,这取决于可用文件描述符的数量。
您可以使用ulimit -n
设置/显示每个shell的可用FD数量。
请参阅这些instructions以了解如何检查(或更改)Linux中可用总FD的值。
This IBM support article建议在Windows上编号为512,您可以在注册表中更改它(按照文章中的说明)
<击>
当open()
将fd返回为int
时 - int的大小也限制为上限。
(与INT_MAX无关)
答案 2 :(得分:1)
仅供参考,作为root,您首先要修改 /etc/security/limits.conf 中的'nofile'项。例如:
* hard nofile 10240
* soft nofile 10240
(limits.conf中的更改通常在用户登录时生效)
然后,用户可以使用 ulimit -n bash命令。我在Fedora 11上测试了多达10,240个文件。
ulimit -n <max_number_of_files>
最后,所有这些都受到内核限制的限制,由下式给出:(我猜你可以回复一个值,以便更高......自负风险)
cat /proc/sys/fs/file-max