Lua:退出事件

时间:2018-02-22 16:51:11

标签: logging lua exit

我正在使用日志更新等一些高级功能编写用于登录Lua的库。纯Lua有退出事件吗?我将在进程退出后使用它来避免光标隐藏。

1 个答案:

答案 0 :(得分:4)

正如Egor在评论中所写,你可以使用__gc元方法来捕捉Lua 5.2+中最终垃圾收集的事件;你需要在Lua 5.1中使用未记录的newproxy。以下代码应该适用于Lua 5.1及更高版本的解释器:

local m = {onexit = function() print("exiting...") end}
if _VERSION >= "Lua 5.2" then
  setmetatable(m, {__gc = m.onexit})
else
  m.sentinel = newproxy(true)
  getmetatable(m.sentinel).__gc = m.onexit
end