我需要在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
)限制,您可以将软限制更改为硬限制。
实际上有两件事约束了你可以随时打开多少个文件:
ulimit -n
指定的环境限制。 一旦考虑到STDIN,STDOUT和STDERR已经被打开,你现在的限制大概是63,而且我不知道这个系统是否低到可能是你的限制,但你需要知道另一个限制。
在Windows上,您可以使用_setmaxstdio(n)
但在默认情况下,您仍然应该能够打开512个文件。 所以我仍然有点困惑,为什么你只有60奇怪,除非你打开每个文件大约8次…