0

open 3を使用してperlを使用してシェルコマンドを実行しています

   local ( *HANDLE_IN, *HANDLE_OUT, *HANDLE_ERR );

    my $pid = open3( *HANDLE_IN, *HANDLE_OUT, *HANDLE_ERR, @cmd_args ); 

@cmd_args = 私のシェルコマンド

私のシェルは以下の終了コードを返します

0: command executed successfully

>0: error in executing the command

perl でシェルから終了コードをキャプチャするにはどうすればよいですか?

4

2 に答える 2

2

wait最終的にはまたはを使用して子を刈り取る必要がありますwaitpid。すると$?、以下のように設定されます。

waitpid($pid, 0);
die "Can't waitpid: $!" if $? < 0;
die "Child killed by signal ".( $? & 0x7F ) if $? & 0x7F;
die "Child returned error ".( $? >> 8 ) if $? >> 8;
print "Child ran successfully!\n";  # if $? == 0
于 2013-04-16T14:52:40.687 に答える