使用open3的Perl fork进程

时间:2013-10-16 08:24:31

标签: perl fork ipcopen3

我有一个perl脚本,我正在分配一个子进程。这就是我在做的事情:

my $pid = fork;

if($pid) {
# parent 
waitpid($pid, 0);
}
else {
exec("some other script X.pl");
}

现在,我想捕获X.pl的错误以显示在我的脚本中。但据我所知,这不可能起诉执行官。

我有哪些其他选择?

如何在我的情况下使用open3?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果你要找的只是X.pl的返回值,你可以使用

my $returnValue = $?>>8;

有关详情,请参阅和http://perldoc.perl.org/functions/system.html。 顺便说一句,如果你的父母所做的都是等待孩子,那么使用system可能比派对更好的fork和exec。

编辑:

要捕获STDOUT,您可以使用

my $output = qx/X.pl/;

而不是分叉和执行。这仍然会让你检查$?为了返回值。 要不使用perl插入命令中的内容,您也可以使用qx'command'将命令传递给系统而不进行任何更改。 如果你希望你的父母在等待X.pl时做一些事情,但仍然想要返回值和X.pl的输出我会建议调查期望。 http://search.cpan.org/~rgiersig/Expect-1.15/Expect.pod