Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在终止/退出lua脚本时调用函数(atexit()/清理函数)_Lua - Fatal编程技术网

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

在终止/退出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 =

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

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

如何做到这一点? 注:我是lua的新手,请解释您的答案,非常感谢:)

我在Linux上使用Lua5.3.1


目前,这似乎有效:

a = {__gc = function() print'exit function from LIB called' end}
setmetatable(a,a)
退房


您可能需要运行lua_runprotected调用以防止堆栈下流问题

你能调用C函数并使用吗?我不能调用lua_close函数来管理C程序。我稍微重新表述了我的问题,因为我认为它不清楚。我想要一种lua的atexit()函数,它将从我的库中调用一个函数来清理它的资源。这不是我想要的,但我找到了我想要的:不幸的是使用了不推荐的newproxy(true),因此不再可行。