我有两个脚本 script_a 和 script_b。script_a 调用 script_b。script_b 分叉两个进程。如下所示。
script_a 等待 script_b 的父级和子级都完成。我希望 script_a 继续而不等待 script_b 的子进程。
我为此所做的是在 script_b 中,我添加了以下代码。
if (! $f_id) {
close STDOUT;
close STDERR;
exec("sleep 10; echo 'i am child'");
}
这对我有用。script_a 不再等待子进程。
我的问题是,1.这是正确的方法吗?2. 父进程和子进程是否共享相同的 STDOUT 和 STDERR,如果存在竞争条件,我最终会遇到麻烦吗?3. 有没有更好的方法来做到这一点?
在此先感谢您的帮助。
script_a.pl
#! /usr/local/bin/perl
print `script_b.pl`;
script_b.pl
#! /usr/local/bin/perl
$f_id = fork();
if (! $f_id) {
exec("sleep 10; echo 'i am child'");
}
if ($f_id) {
print "i am parent\n";
}