反向命令中的独立子项

时间:2015-04-13 09:43:37

标签: linux perl fork

这是一个执行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")
}

反击意味着等待,但我不想等待最后一个孩子。 感谢

2 个答案:

答案 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");
}