在典型的操作系统上,我可以使用标准 C 盘 IO 一次打开多少个文件?
我试图读取一些应该告诉它的常量,但在 Windows XP 32 位上,这只是微不足道的 20 或其他东西。虽然它似乎与 30 多个一起工作得很好,但我还没有对它进行广泛的测试。
我最多需要一次打开大约 400 个文件,所以如果大多数现代操作系统都支持它,那就太棒了。它不需要支持 XP,但应该支持 Linux、Win7 和最新版本的 Windows 服务器。
另一种方法是编写我自己的迷你文件系统,如果可能的话我想避免。
在 Linux 上,这取决于可用文件描述符的数量。您可以使用ulimit -n设置/显示每个 shell 的可用 FD 数量。
请参阅这些说明以了解如何检查(或更改)Linux 中可用总 FD:s 的值。
这篇 IBM 支持文章建议在 Windows 上编号为 512,您可以在注册表中更改它(按照文章中的说明)
As(无关,因为 INT_MAX 很多)open()返回 fd as int- int 的大小限制也是上限。
进程可以使用 getrlimit 系统调用查询限制。
#include<sys/resource.h>
struct rlimit rlim;
getrlimit(RLIMIT_NOFILE, &rlim);
printf("Max number of open files: %d\n", rlim.rlim_cur-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
另外,请参阅http://www.karakas-online.de/forum/viewtopic.php?t=9834