1. ホーム
  2. lua

[解決済み] Luaはstdoutをコンソールウィンドウにリダイレクトします。

2022-02-27 16:29:23

質問

私は、ユーザーにメッセージを表示する必要があるluaスクリプトを書こうとしていますが、もちろん、ホストアプリケーションは限られたサポートしか提供しません。

そこで、コンソールウィンドウを開き、print()をリダイレクトさせたいと考えています。このように動作することを期待しています。

io.stdout = io.popen('find /v ""', "w")
print("It works!")

が、パイプからの入力を待つのではなく、コンソールウィンドウをすぐに閉じてしまうだけです。

Windows 7 で lua 5.1 を使用する

編集:気づいたのですが find コマンドはパイプが閉じられると終了します。パイプからの読み込みに失敗しているか、パイプが早く閉じている可能性はないでしょうか?

解決方法は?

Windowsで出力用のコンソールを開くには、これが有効だとわかりました。

local out = io.popen('find /v "" > con', "w")
function print(s)
  out:write(s.."\r\n") --\r because windows
  out:flush()
end
print("It really works this time!")

findコマンドは、指定された stdout を提供します。 > con を設定するように指示します。 stdout をコンソールに送信し、コンソールを開いたままにしておきます。