fopen不会同时处理超过60个文件

时间:2013-09-04 08:59:44

标签: c windows file-io fopen

我需要在我的C程序中同时打开60多个文本文件。但是,似乎fopen无法同时处理超过60个文件。我在Windows环境下编程。

我使用以下fopen语句:

fopen(fileName.c_str(),"wt");

其中fileName是我的txt文件的路径,名称在循环内沿100个文件更改。有没有人知道任何使这项工作的技巧?或者任何其他选择?

2 个答案:

答案 0 :(得分:2)

如果发出bash shell命令:

ulimit -n

你会看到60是你打开文件句柄的限制。您可以使用以下命令进行更改:

ulimit -n 256

注意:您可以使用-S-H看到软(-Sn)和硬(-Hn)限制,您可以将软限制更改为你的硬限制。

答案 1 :(得分:2)

实际上两个限制了您可以随时打开的文件数量:

  1. ulimit -n指定的环境限制。
  2. C运行时库。我知道有几个限制你使用256个文件句柄(Sun命名为1)
  3. 一旦你考虑到STDIN,STDOUT和STDERR已被打开,你的当前限制可能是63,而且我知道系统那么低,所以它可能是你的{{1但是你需要知道另一个限制。

    在Windows上,您可以使用ulimit,但在默认情况下,您仍然可以打开512个文件。所以我仍然有点困惑,为什么你只得到60奇数,除非你打开每个文件约8次...