我有以下代码试图将数组绑定到文件。 除了当我运行这个代码时,它只创build2045个文件。 这里有什么问题?
#!/usr/bin/perl use Tie::File; for (my $i = 0; $i < 10000; $i++) { @files{$i} = (); tie @{$files{$i}}, 'Tie::File', "files//tiefile$i"; }
编辑:我在窗户上
您正在累积打开的文件句柄(请参阅ulimit -n
, setrlimit
RLIMIT_NOFILE
/ RLIMIT_OFILE
),最终打开2048个打开的文件描述符限制(2045 + stdin
+ stdout
+ stderr
。
在Windows下,你将不得不重写你的应用程序,这样它一次最多可以打开2048个文件句柄,因为2048的限制是MSVC的stdio
硬限制(不能修改)。
在Linux机器上,进入/etc/security/limits.conf
并添加或修改这些行
* soft nofile 10003 * hard nofile 10003
这将增加每个进程可以打开的文件数量到10003(记住,你总是以三个开始:stdin,stdout和stderr开始)。
根据你的意见,这听起来像你使用的Win32机器。 我无法找到增加每个进程的打开文件数量的方法,但是我可能会强调,可以通过fork
(这实际上是在Win32上进行线程化)来处理这个问题。