我需要在Perl腳本中打開超過10,000個文件,因此我要求系統管理員將我的帳戶限制更改爲14,000。 ulimit -a
現在顯示了這些設置:在Perl中打開超過10,000個文件的問題
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
的變化後,我跑了,打開/創建256個文件,並關閉256文件句柄在腳本的最後一個測試Perl程序。當它創建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