如果打开失败会发生什么?

时间:2011-01-06 22:36:56

标签: perl ipc

我遇到了以下代码:

my $pid = open (my $handler, "-|");
unless ($pid) 
{
    #child stuff
    exec $command;
}
else
{
    #parent stuff
}

如果隐式fork失败会发生什么?命令是否会被执行?

1 个答案:

答案 0 :(得分:2)

是的,除非代码使用类似autodie的内容,否则将执行该命令。

open($fh, '-|')在失败时返回undef,这是错误的,因此(未执行的)进程将执行命令(从而终止自身)。

(在一个不相关的说明中,我和许多其他程序员认为unless ... else ...是不好的风格,但有效的Perl。)