Lua: 退出事件

我正在使用Lua编写日志记录库,并加入了一些高级功能,比如日志动态更新。在纯Lua中是否有任何退出事件呢?我想使用它来避免在进程退出后光标隐藏。

点赞
用户1442917
用户1442917

正如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
2018-02-22 23:27:03