Tag: interrupt

Lua / Java / LuaJ – 处理或中断无限循环和线程

我正在使用LuaJ在Java中运行用户创建的Lua脚本。 但是,运行永不返回的Lua脚本会导致Java线程冻结。 这也使线程不可中断。 我运行Lua脚本: JsePlatform.standardGlobals().loadFile(“badscript.lua”).call(); badscript.lua包含while true do end 。 我希望能够自动终止陷入不屈的循环的脚本,并允许用户在运行时手动终止他们的Lua脚本。 我已经阅读了有关debug.sethook和pcall的内容 ,但我不确定我是如何正确地将它们用于我的目的。 我也听说沙盒是一个更好的选择,虽然这有点超出我的范围。 这个问题也可能仅扩展到Java线程。 我没有找到关于在一段while (true);中断Java线程的任何确切信息while (true); 。 在线Lua演示是非常有前途的,但似乎“坏”脚本的检测和终止是在CGI脚本而不是Lua中完成的。 我是否可以使用Java调用CGI脚本,后者又调用Lua脚本? 不过,我不确定是否允许用户手动终止他们的脚本。 我丢失了Lua演示源代码的链接,但我手头有它。 这是神奇的路线: tee -a $LOG | (ulimit -t 1 ; $LUA demo.lua 2>&1 | head -c 8k) 有人能指出我正确的方向吗? 一些来源: 嵌入式Lua – 超时流氓脚本(例如无限循环) – 任何人的例子? 防止Lua无限循环 嵌入式Lua – 超时流氓脚本(例如无限循环) – 任何人的例子? 当一些循环执行长任务时如何中断线程? 在Java中指定的时间限制后杀死线程

Cygwin CTRL-C(信号中断)无法正常工作 – JVM Shutdown Hooks无法启动

我正在开发一个利用关闭挂钩的Java应用程序,以便清除程序的终止/中断,但我注意到Cygwin的CTRL-C实现似乎没有触发关闭挂钩。 从表面上看,似乎已中断了该过程,将控制权交还给命令行,但是根本不会触发进程的“关闭”挂钩,因此不会发生清理。 在cmd中它们被捕获,但由于各种约束,我需要以某种方式让它们在Cygwin中工作。 有什么方法可以通过Cygwin在正在运行的进程中触发SIGINT,或者可能是我可以用来清理中断和终止的关闭挂钩的替代方法?