在终止/退出lua脚本时调用函数(atexit()/清理函数)
问题:当系统或启动脚本的程序(例如C程序)终止lua脚本时,是否有方法调用函数?lua的atexit()/清理函数 情况:外部C程序(称为PROG)管理lua脚本(称为脚本)并调用其函数,lua脚本使用单独的库(.so,cal it LIB),该库保留在lua脚本退出时应释放的资源。lua脚本由PROG管理(并因此终止),我无法更改它。脚本终止时应通知LIB 如何做到这一点? 注:我是lua的新手,请解释您的答案,非常感谢:) 我在Linux上使用Lua5.3.1在终止/退出lua脚本时调用函数(atexit()/清理函数),lua,Lua,问题:当系统或启动脚本的程序(例如C程序)终止lua脚本时,是否有方法调用函数?lua的atexit()/清理函数 情况:外部C程序(称为PROG)管理lua脚本(称为脚本)并调用其函数,lua脚本使用单独的库(.so,cal it LIB),该库保留在lua脚本退出时应释放的资源。lua脚本由PROG管理(并因此终止),我无法更改它。脚本终止时应通知LIB 如何做到这一点? 注:我是lua的新手,请解释您的答案,非常感谢:) 我在Linux上使用Lua5.3.1 目前,这似乎有效: a =
目前,这似乎有效:
a = {__gc = function() print'exit function from LIB called' end}
setmetatable(a,a)
退房
您可能需要运行lua_runprotected调用以防止堆栈下流问题 你能调用C函数并使用吗?我不能调用lua_close函数来管理C程序。我稍微重新表述了我的问题,因为我认为它不清楚。我想要一种lua的atexit()函数,它将从我的库中调用一个函数来清理它的资源。这不是我想要的,但我找到了我想要的:不幸的是使用了不推荐的newproxy(true),因此不再可行。