2つのスクリプトscript_aとscript_bがあります。script_aはscript_bを呼び出します。script_bは2つのプロセスをフォークします。以下に示すように。
script_aは、script_bの親と子の両方が終了するのを待ちます。script_bの子プロセスを待たずにscript_aを続行したい。
これに対して私が行ったことは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";
}