小编Ben*_*rds的帖子

为什么我不从我的子进程中获取退出状态?

我有一个Perl程序,我正在管理它能够分叉多个进程(达到指定的限制),监视它们,当它们退出时,分叉其他进程(再次,达到极限),直到要运行的事物列表完成.它工作正常,除了某些原因它似乎没有从我的子进程中获取正确的退出状态.

不工作的代码使用Perl的fork(),waitpid()和子进程使用POSIX::_exit()戒烟.以下是相关代码的一些摘录:

分叉代码:

# Initialize process if running in parallel mode
my $pid;
if ($options{'parallel'} > 0) {
    log_status("Waiting to fork test #".$curr_test{'id'}."...\n");

    # Here, wait for child processes to complete so we can fork off new ones without going over the specified limit
    while ( keys(%children) >= $options{'parallel'}) {
        my $kid = waitpid(-1, 0);
        my $kid_status = $?;

        if ($kid > 0) {
            log_status("Child process (PID ".$kid.", test ".$children{$kid}.") exited with status ".$kid_status.".\n"); …
Run Code Online (Sandbox Code Playgroud)

perl posix fork

1
推荐指数
1
解决办法
2234
查看次数

标签 统计

fork ×1

perl ×1

posix ×1