web-dev-qa-db-ja.com

Luaでos.executeの出力を取得する

Luaで「os.execute」を実行すると、コンソールがすぐにポップアップし、コマンドを実行してから閉じます。しかし、標準のLuaライブラリのみを使用してコンソール出力を取得する方法はありますか?

42
Drealmer

これが欲しいと思います http://pgl.yoyo.org/luai/i/io.popen io.popen。しかし、常に組み込まれているわけではありません。

26
Arle Nadja

あなたがio.popenを持っているなら、これは私が使うものです:

 function os.capture(cmd、raw)
 local f = assert(io.popen(cmd、 'r'))
 local s = assert(f:read( ' * a '))
 f:close()
 rawの場合、s end 
 s = string.gsub(s、' ^%s + '、' ')[を返します。 ____。] s = string.gsub(s、 '%s + $'、 '')
 s = string.gsub(s、 '[\ n\r] +'、 '')
 return s 
 end 

Io.popenがない場合、おそらくpopen(3)がシステムで利用できず、深いヨーグルトに入っています。しかし、すべてのunix/mac/windows Luaポートにはio.popenがあります。

57
Norman Ramsey

Luaについては特に知りませんが、通常は次のようにコマンドを実行できます。

comd >comd.txt 2>&1

出力とエラーをファイルcomd.txtにキャプチャし、言語ファイルI/O関数を使用してそれを読み取ります。

言語自体が標準出力とエラーをキャプチャする機能を備えていなかった場合は、この方法で行います。

0
paxdiablo