这是一个执行perl脚本的主脚本" fork.pl" #!/斌/庆典
OUTPUT=`./fork.pl`
echo "$OUTPUT"
而fork.pl: #!的/ usr / bin中/ perl的
use strict;
use warnings;
use POSIX;
my $pid = fork();
if ($pid == 0) {
sleep(5);
print("child: $pid\n");
}
else {
print("parent: $pid\n")
}
反击意味着等待,但我不想等待最后一个孩子。 感谢
答案 0 :(得分:0)
不等待终止的方法之一是在将输出重定向到文件的同时在后台启动。然后尝试使用shell read
读取行。
例如,黑客读取第一行:
./fork.pl > temp.out &
sleep 1
read OUTPUT < temp.out
或者,没有sleep
,但仅限于do
/ done
块:
./fork.pl | while read OUTPUT; do
# use $OUTPUT here
break # first line only, or loop conditionally
done
答案 1 :(得分:0)
需要从父级分离并重定向输入/输出:
if ($pid == 0) {
my $mysid = setsid();
open (STDIN, "</dev/null");
open (STDOUT, ">/dev/null");
open (STDERR, ">&STDOUT");
sleep(5);
print("child: $pid\n");
}