我遇到了以下代码:
my $pid = open (my $handler, "-|");
unless ($pid)
{
#child stuff
exec $command;
}
else
{
#parent stuff
}
如果隐式fork失败会发生什么?命令是否会被执行?
答案 0 :(得分:2)
是的,除非代码使用类似autodie的内容,否则将执行该命令。
open($fh, '-|')
在失败时返回undef
,这是错误的,因此(未执行的)进程将执行命令(从而终止自身)。
(在一个不相关的说明中,我和许多其他程序员认为unless ... else ...
是不好的风格,但是有效的Perl。)