【发布时间】:2011-01-06 22:36:55
【问题描述】:
我遇到了以下代码:
my $pid = open (my $handler, "-|");
unless ($pid)
{
#child stuff
exec $command;
}
else
{
#parent stuff
}
如果隐式分叉失败会发生什么?无论如何都会执行命令吗?
【问题讨论】:
我遇到了以下代码:
my $pid = open (my $handler, "-|");
unless ($pid)
{
#child stuff
exec $command;
}
else
{
#parent stuff
}
如果隐式分叉失败会发生什么?无论如何都会执行命令吗?
【问题讨论】:
是的,该命令将被执行,除非代码使用autodie 之类的东西。
open($fh, '-|') 在失败时返回undef,这是错误的,因此(未分叉的)进程将执行命令(并因此终止自身)。
(在一个无关的注释中,我和许多其他程序员都觉得unless ... else ... 风格不好,但它是有效的Perl。)
【讨论】: