如果打开失败会发生什么情况?
问题描述:
我碰到下面的代码:如果隐含叉失败如果打开失败会发生什么情况?
my $pid = open (my $handler, "-|");
unless ($pid)
{
#child stuff
exec $command;
}
else
{
#parent stuff
}
会发生什么?该命令是否会被执行?
答
是的命令将被执行,除非代码使用类似autodie的东西。
open($fh, '-|')
返回undef
失败,这是错误的,所以(不受限制的)进程将执行该命令(从而自行终止)。
(在一个不相关的说明,我和许多其他程序员,觉得unless ... else ...
是坏的风格,但它是有效的Perl)。