0

PerlのHTTP::Server::Simple::CGIモジュールを使用してリモートマシンでコマンドを実行し、 を使用してその出力を返そうとしていますqx//が、コマンドが成功するかどうかに関係なく、$?返されるよう-1です(成功するかどうかを知りたいです) .

特に、ドキュメント ページhttp://metacpan.org/pod/HTTP::Server::Simple#EXAMPLE$whoの例の行設定を次のコマンドに変更しました。HTTP::Server::Simple::CGI

my $who = qx/cat some_file/."\nReturns $?";

ただし、ファイルが存在するかどうかとして$?表示されます。-1ファイルが存在する場合はファイルの内容が表示されるため、明らかに基本的に機能しています。これを

perl -le 'print qx/cat some_file/."\nReturns $?"'

256これは、失敗または0成功時に返されることを示しています。ちなみに、エラーの場合は失敗を報告しますstderr- Simple の場合とは異なります。

私がしなければならない特別なことはあり$?ますか?

私はPerl 5.14.2、Ubuntu 12.04を使用しています。

4

1 に答える 1

4

追跡したところ、ゾンビプロセスに対する予防策としてHTTP::Server::Simple::CGI設定されているようです。$SIG{'CHLD'}='IGNORE'

local $SIG{'CHLD'}='DEFAULT'の呼び出しの直前に設定qx//すると、リターン コードにアクセスできます。

于 2013-07-27T21:19:59.580 に答える