使用 lua 实时读取控制台输出(第二版)

我有一个进程 process.exe,它监视一些行为并在实时运行时将所有更改打印到控制台窗口中。作为独立事物它完美地工作。

现在我需要使用 lua 脚本来读取它的输出。 我尝试使用这里提供的答案:

使用 lua 实时读取控制台输出

local pipe = io.popen('process.exe "myPath"')
for line in pipe:lines() do
    print(line)
end
pipe:close()

问题在于,这个 lua 脚本会产生一个挂起的 cmd.exe 窗口,而且不会在我的 LUA 控制台中打印任何内容。只有在我关闭这个 cmd 窗口之后,脚本才会将所有的输出打印出来。所以我不知道如何解决这个问题。

原文链接 https://stackoverflow.com/questions/69313107

点赞
stackoverflow用户11740758
stackoverflow用户11740758

似乎 process.exe 本身并没有结束,因此……

“只有在我关闭这个 cmd 窗口后,脚本才会输出所有内容。”

这意味着你需要自己关闭 process.exe

如果是这样,并且你只需要输出,那么请使用 os.execute()

注意不要在 for ... do ... end 循环中使用。

2021-09-24 11:45:56
stackoverflow用户1889201
stackoverflow用户1889201

这只是你给 Lua 解释器的一个指令,所以它只会在运行脚本时执行一次。它将运行 proccess.exe,等待其完成,然后将整个输出写入控制台。

如果 proccess.exe 正在将数据记录到计算机上的文件中,则可以使用 while true do 语句来检查文件是否有更改,并打印任何新到达的内容。

如果需要,我很乐意为您编写此内容。

2022-12-13 17:29:25