我需要使用Lua运行一个二进制程序,该程序可能会在其stdout中写入一些内容,并且还返回一个状态码(也称为“exit status”)。
我在网上搜索,找不到符合我需要的内容。但是我发现在Lua中:
os.execute()
返回状态码io.popen()
返回一个文件处理程序,可用于读取进程输出但是我都需要。编写在后台运行这两个函数的包装器函数是不可行的,因为这会增加过程开销,并可能在连续运行时改变结果。我需要编写一个这样的函数:
function run(binpath)
...
return output,exitcode
end
有谁知道如何解决这个问题?
PS。目标系统为Linux。
最佳答案
使用Lua 5.2,我可以执行以下操作,并且可以正常工作
-- This will open the file
local file = io.popen('dmesg')
-- This will read all of the output, as always
local output = file:read('*all')
-- This will get a table with some return stuff
-- rc[1] will be true, false or nil
-- rc[3] will be the signal
local rc = {file:close()}
我希望这有帮助!
关于lua - 获取退货状态和程序输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7607384/