问题:当lua脚本被系统或已启动脚本的程序(例如C程序)终止时,是否有办法调用函数? lua的atexit()/清除功能。
情况:外部C程序(称之为PROG)管理lua脚本(称之为SCRIPT)并调用其函数,lua脚本使用一个独立的库(.so,cal it 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)
答案 0 :(得分:0)
查看http://lua-users.org/lists/lua-l/2001-08/msg00265.html
您可能需要运行lua_runprotected调用以防止堆栈处于流量问题。