我有一个perl脚本,我正在分配一个子进程。这就是我在做的事情:
my $pid = fork;
if($pid) {
# parent
waitpid($pid, 0);
}
else {
exec("some other script X.pl");
}
现在,我想捕获X.pl的错误以显示在我的脚本中。但据我所知,这不可能起诉执行官。
我有哪些其他选择?
如何在我的情况下使用open3?
谢谢!
答案 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