在终止/退出lua脚本(atexit()/清理函数)时调用函数

时间:2015-07-19 07:07:50

标签: lua

问题:当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)

1 个答案:

答案 0 :(得分:0)

查看http://lua-users.org/lists/lua-l/2001-08/msg00265.html

您可能需要运行lua_runprotected调用以防止堆栈处于流量问题。