我正在运行Lua代码。 (见下文)。代码运行正常,但是当我尝试使用CTRL + C
发送SIGINT时,它不尊重它。
https://gist.github.com/meetme2meat/fb8f65059d0e45d6a4e5453513b30373
如何实现这一点,并确保Lua程序遵守CTRL + C.
我尝试使用posix.signal
但没有用。
signal.signal(signal.SIGINT, function(signum)
io.write("Interrupting => \n")
-- put code to save some stuff here
os.exit(0)
end)
答案 0 :(得分:0)
posix.signal
通过在接收到信号时设置Lua挂钩来实现信号处理。 Lua钩子将在下一次执行Lua指令时运行。您的程序使用LuaSocket,这是用C编写的Lua库。因此,如果在LuaSocket的C代码运行时信号进入,则直到信号处理代码返回后,您的信号处理代码才会运行。为了按照您想要的方式进行工作,必须修改LuaSocket以使其在被信号中断时执行伪lua_call
。然后,这将触发您的Lua挂钩运行。我为此打开了https://github.com/diegonehab/luasocket/issues/319。