22

rubyのOpen3.popen3()メソッドから開始されたシェルコマンドの終了ステータスを取得しようとして立ち往生しているようです。

これが私のコードです:

require 'open3'
stdin, stdout, stderr = Open3.popen3('ls')

私が今アクセスしようとすると、$?それはまだですnil

結局、終了ステータスを取得することは可能ですか?

注:
-lsは、スクリプトで使用しようとしているコマンドではありません。例を示すためにこれを使用しました。私のスクリプトはもう少し複雑で、ユーザー入力が含まれているため、Open3のサニタイズ機能が必要です。
--popen3のブロックバリアントも試しましたが、それでも成功しませんでした。

4

3 に答える 3

27

popen3stdinstdoutstderrおよびの 4 つのパラメータを生成/返しますwait_thrwait_thrコマンドの終了ステータスを返すメソッドが含まれてwait_thr.valueいます(実際、Process::Statusドキュメントによるとオブジェクトです)。http://www.ruby-doc.org/stdlib-1.9.3/libdoc/open3/rdoc/Open3.html#method-c-popen3もご覧ください。

于 2013-02-22T12:15:11.100 に答える