1

これは私が試したことです...

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に基づいていますが、明らかに何かが欠けています。

4

2 に答える 2

2

Jython のバグのようです。そこにはいくつかの回避策があります。

于 2013-01-18T09:12:23.000 に答える
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 が押された後にプログラムをシャットダウンするのに役立ちます。

于 2015-07-09T08:40:28.733 に答える