在 Lua 脚本终止或退出时调用一个函数(类似 atexit()/清理函数)。

问题:当lua脚本被系统或启动脚本的程序(例如C程序)终止时,是否有一种方法调用函数?一种用于lua的atexit()/清理函数。

情况:一个外部的C程序(称之为PROG)管理一个Lua脚本(称之为SCRIPT),并调用它的函数,Lua脚本使用一个独立的库(.so,称之为LIB),该库为在Lua脚本退出时应该释放的资源保留了资源。Lua脚本由PROG管理(因此终止),而我无法更改。SCRIPT应该在终止时通知LIB。

应该如何完成这项工作? 注意:我对Lua非常新,请解释您的答案,非常感谢:)

我在Linux上使用Lua 5.3.1


目前这似乎有效:

a = {__gc = function() print'exit function from LIB called' end}
setmetatable(a,a)
点赞
用户1779362
用户1779362

请访问 http://lua-users.org/lists/lua-l/2001-08/msg00265.html

你可能需要运行 lua_runprotected 函数来防止栈溢出问题。

2015-07-19 07:25:46