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

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

我使用下面的fopen语句:

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

其中fileName是我的txt文件的path,在100个文件循环内更改的名称。 有没有人知道这个工作有什么窍门? 或者有其他的select

如果您发出bash shell命令:

 ulimit -n 

你会看到60是你打开文件句柄的限制。 你可以改变它:

 ulimit -n 256 

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

实际上有件事约束了你可以随时打开多少个文件:

  1. ulimit -n指定的环境限制。
  2. C运行时库。 我知道有几个限制你到256个文件句柄(太阳命名一个)

一旦考虑到STDIN,STDOUT和STDERR已经被打开,你现在的限制大概是63,而且我不知道这个系统是否低到可能是你的限制,但你需要知道另一个限制。

在Windows上,您可以使用_setmaxstdio(n)但在默认情况下,您仍然应该能够打开512个文件。 所以我仍然有点困惑,为什么你只有60奇怪,除非你打开每个文件大约8次…