Я только что обнаружил проблему, при которой мне пришлось закрыть все открытые дескрипторы файлов, чтобы мой cgi-скрипт Apache продолжил работу. Я отследил проблему до Parse :: RecDescent.
#!/usr/bin/env perl
use strict;
use warnings;
use feature qw/say/;
$|++;
print "Content-Type: text/plain\n\n";
use Parse::RecDescent;
say "$$: pre-fork: ". time;
if(my $pid = fork) {
# parent
say "$$: return immediately: ". time;
}
else {
# child
say "$$: kicked off big process: ". time;
close STDIN;
close STDOUT;
close STDERR;
# close *{'Parse::RecDescent::ERROR'};
sleep 5;
}
У меня вопрос: как найти все дескрипторы файлов открытых пакетов?
Я знаю, что fileno
вернет счетчик для дескрипторов открытых файлов.
Есть ли способ выполнить обратный поиск для них или закрыть дескрипторы файлов по их счетчику fileno
?