我需要在Perl脚本中打开超过10,000个文件,因此我请求系统管理员将我的账户限制更改为14,000。 ulimit -a
现在显示以下设置:
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
open files (-n) 14000
pipe size (512 bytes, -p) 10
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 29995
virtual memory (kbytes, -v) unlimited
更改后,我运行了一个测试Perl程序,它打开/创建256个文件,并在脚本结束时关闭256个文件句柄。当它创建253个文件时,程序会因打开太多文件而崩溃。我不明白为什么会出现这个错误。
我正在使用Solaris 10平台。以下是我的代码:
my @list;
my $filename = "test";
for ($i = 256; $i >= 0; $i--) {
print "$i " . "\n";
$filename = "test" . "$i";
if (open my $in, ">", ${filename}) {
push @list, $in;
print $in $filename . "\n";
}
else {
warn "Could not open file '$filename'. $!";
die;
}
}
for ($i = 256; $i >= 0; $i--) {
my $retVal = pop @list;
print $retVal . "\n";
close($retVal);
}
for ($i = 256; $i >= 0; $i--)
失败时,会生成 257 个文件。请问您在失败时得到了什么输出? - Borodin