gpt4 book ai didi

perl - 一个 perl child 可以等待另一个 perl child 完成吗?

转载 作者:行者123 更新时间:2023-12-02 08:43:35 26 4
gpt4 key购买 nike

所以我有一个程序,我可以派生一些 child 来做一些有用的任务。然后我产生了另一个 child ,他需要等待第一个 child 在完成它的工作之前停下来。然后父程序继续运行并在最后等待最后一个 fork 的子程序停止。

我遇到了一个问题,需要等待其他人的 child 不需要。

use strict;
use warnings;
use diagnostics;

my $pid1;
my $child1 = fork();
if ($child1) {
# parent
#print "pid is $pid, parent $$\n";
$pid1 = $child1;
} elsif ($child1 == 0) {
# child1
# do something
sleep 20;
print "Child1\n";

exit 0;
} else {
die "couldnt fork: $!\n";
}

my $pid2;
my $child2 = fork();
if ($child2) {
# parent
#print "pid is $pid, parent $$\n";
$pid2 = $child2;
} elsif ($child2 == 0) {
# child2
# wait for child1 to finish
my $tmp = waitpid($pid1, 0);

# do something else
print "Child2\n";

exit 0;
} else {
die "couldnt fork: $!\n";
}

# do more stuff

# wait for child2 to finish
my $tmp = waitpid($pid2, 0);

有没有简单的方法来做到这一点?可能不需要将第一个 child 包裹在第二个 child 中?

最佳答案

在类 Unix 系统中,给定的进程只能等待自己的子进程死掉。它不能等待 sibling 、祖先或孙辈死去。

关于perl - 一个 perl child 可以等待另一个 perl child 完成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com