Lua: 退出事件

Lua: exit event

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

正如 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