2015-07-19 65 views
2

問題:有沒有一種方法可以在系統或已啓動的程序終止lua腳本時調用函數腳本(例如C程序)? lua的atexit()/清理功能。調用終止/退出lua腳本(atexit()/清理函數)的函數

情況:一個外部C程序(稱爲PROG)管理一個Lua腳本(稱爲腳本),並調用其功能的LUA腳本使用其預留資源分離庫(。所以,CAL它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

您可以調用C函數[lua_close](http://www.lua.org/manual/5.3/manual.html#lua_close)並使用[userdata with __gc](http://www.lua.org /pil/29.html)? –

+0

我無法調用將用於管理C程序的lua_close函數。我稍微重新提出了我的問題,因爲我認爲它還不清楚。我想要一個lua的atexit()函數,它會從我的庫中調用一個函數來清理它的資源。 – iami

回答

0

退房http://lua-users.org/lists/lua-l/2001-08/msg00265.html

您可能需要運行lua_runprotected呼籲防止在流動問題堆棧。

+0

不是真的我在找什麼,但我發現我的心態:http://lua-users.org/lists/lua-l/2009-09/msg00147.html不幸的是使用了不推薦使用的newproxy(true),因此不再可行。 – iami