|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Nick Kostirya 2:5020/400 27 Jan 2004 18:23:27 To : All Subject : fork and IO::Dir --------------------------------------------------------------------------------
Привет, обнаружил вот такую мистику на FreeBSD 4.9-RELEASE FreeBSD
4.9-RELEASE #9:
%perl -v
This is perl, v5.8.0 built for i386-freebsd
Есть перловый скрипт (код приведен ниже), который выполняется бесконечно на
фришке.
Hа линуже все нормально.
Бесконечность пропадает либо при удалении форканья, либо при отказе
использования модуля IO::Dir.
Hикто с таким не сталкивался?
Еще раз напомню, что на линуже все работает.
use strict;
use warnings;
use POSIX ":sys_wait_h";
my $childen = 0;
$SIG{CHLD} = \&REAPER;
sub REAPER {
$SIG{CHLD} = \&REAPER;
while (my $pid = waitpid(-1, WNOHANG) > 0){
$childen--;
}
}
sub forking {
if (my $pid = fork) {
$childen++;
} else {
die "Cannot fork: $!." unless defined $pid;
exit;
}
}
use IO::Dir;
my $dir = new IO::Dir "." or warn("Can't open dir: $!.");
while (defined($_ = $dir->read)) {
print "$dir $$ $_\n";
print $dir->tell(), "\n";
forking();
}
--- ifmail v.2.15dev5.1
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/657738e46d36.html, оценка из 5, голосов 10
|