1
私は、次のコードに出くわした:暗黙のフォークが失敗した場合に何が起こるかオープンに失敗した場合はどうなりますか?
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
を返します。これはfalseなので、(フォークされていない)プロセスはコマンドを実行して終了します。
(無関係なノートで、I、および他の多くのプログラマが、unless ... else ...
が悪いのスタイルであることを感じるが、それが有効なPerlのである。)