【问题标题】:what happens if open fails?如果打开失败会发生什么?
【发布时间】:2011-01-06 22:36:55
【问题描述】:

我遇到了以下代码:

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

如果隐式分叉失败会发生什么?无论如何都会执行命令吗?

【问题讨论】:

    标签: perl ipc


    【解决方案1】:

    是的,该命令将被执行,除非代码使用autodie 之类的东西。

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

    (在一个无关的注释中,我和许多其他程序员都觉得unless ... else ... 风格不好,但它有效的Perl。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      • 2016-01-23
      • 1970-01-01
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多