这就是我尝试过的......
from sun.misc import Signal
from sun.misc import SignalHandler
class InterruptHandler(SignalHandler):
def handle(self):
print "Shutting down server..."
Signal.handle(Signal("INT"),InterruptHandler())
它基于http://www.javaspecialists.co.za/archive/Issue043.html,但显然我错过了一些东西。
答案 0 :(得分:2)
Looks like a bug in Jython。那里有一些解决方法。
答案 1 :(得分:1)
之前我遇到过类似的问题。这就是我解决问题的方法。
首先,通过以下方式在Jython脚本中注册信号处理程序:
import signal
def intHandler(signum, frame):
print "Shutting down.."
System.exit(1)
# Set the signal handler
signal.signal(signal.SIGINT, intHandler)
signal.signal(signal.SIGTERM, intHandler)
这将注册Jython脚本的信号处理程序,以处理CTRL + C键盘输入。
但是,默认控制台类org.python.util.JLineConsole将ctrl + C视为普通字符输入。
所以,其次 - 需要通过更改Jython属性将python.console更改为备用控制台类org.python.core.PlainConsole:
python.console=org.python.core.PlainConsole
或添加jvm参数:
-Dpython.console=org.python.core.PlainConsole
这将帮助您在按下CTRL + C后关闭程序。