2016-06-09 27 views
4

当使用Parallel::ForkManager时,有时会出现此警告,但只能在Windows中使用,而不能在基于Unix的系统上使用。这是什么意思,我应该担心吗?使用Parallel :: ForkManager的警告,但只在Windows中使用

子进程'-17108'消失。 以外的waitpid调用Parallel :: ForkManager可能已经收获了它。

下面是从docs示例代码,我的代码是基于:

use LWP::Simple; 
use Parallel::ForkManager; 

my @links=(
    ["http://www.foo.bar/rulez.data","rulez_data.txt"], 
    ["http://new.host/more_data.doc","more_data.doc"], 
); 

# Max 30 processes for parallel download 
my $pm = Parallel::ForkManager->new(30); 

LINKS: 
foreach my $linkarray (@links) { 
    $pm->start and next LINKS; # do the fork 

    my ($link, $fn) = @$linkarray; 
    warn "Cannot get $fn from $link" 
     if getstore($link, $fn) != RC_OK; 

    $pm->finish; # do the exit in the child process 
} 

$pm->wait_all_children; 
+1

这意味着该进程结束,并且其他进程收到它在Parallel :: ForkManager之前调用waitpid。鉴于它只是有时发生,并且在Windows上可能表明某处存在缺陷,我想。 – jira

+0

@jira没有其他可以获得它的进程。无论如何,“收获”意味着什么? – CJ7

+0

我认为最好将它报告为Parallel :: ForkManager中的一个可能的错误。 – jira

回答

2

我有类似的问题,并把睡眠1日前“$ - 下午>启动和未来的联系;” 修复了这个问题。我想它应该继续分叉,Perl丢失了fork进程的踪迹。我可能是错的!