我需要在我的C程序中同时打开60多个文本文件。但是,似乎fopen无法同时处理超过60个文件。我在Windows环境下编程。
我使用以下fopen语句:
fopen(fileName.c_str(),"wt");
其中fileName是我的txt文件的路径,名称在循环内沿100个文件更改。有没有人知道任何使这项工作的技巧?或者任何其他选择?
答案 0 :(得分:2)
如果发出bash shell命令:
ulimit -n
你会看到60是你打开文件句柄的限制。您可以使用以下命令进行更改:
ulimit -n 256
注意:您可以使用-S
和-H
看到软(-Sn
)和硬(-Hn
)限制,您可以将软限制更改为你的硬限制。
答案 1 :(得分:2)
实际上两个限制了您可以随时打开的文件数量:
ulimit -n
指定的环境限制。一旦你考虑到STDIN,STDOUT和STDERR已被打开,你的当前限制可能是63,而且我知道系统那么低,所以它可能是你的{{1但是你需要知道另一个限制。
在Windows上,您可以使用ulimit
,但在默认情况下,您仍然可以打开512个文件。所以我仍然有点困惑,为什么你只得到60奇数,除非你打开每个文件约8次...