2

raw_input がキーボード割り込みをキャッチするようにするための Python コードが少しあります。この関数でコードを実行すると、完全に正常に動作します。しかし、私のプログラムでそれを実行すると、印刷ステートメントは作成されず、キーボード割り込みがキャッチされていないことが示されます。プログラムは終了を試み、SIGKILL にエスカレートするまで失敗しますが、もちろん正常に動作します。私の推測では、キーボード割り込みが別の場所でキャッチされているため、例外がまったく実行されていません。私の質問は、そのような割り込みが発生する可能性が高い場所と、これをブロックしないようにするにはどうすればよいかということです。私の計画は、プログラムがキーボード割り込みをキャッチしてからプログラム自体を強制終了するまでの間にわずかな遅延を追加して、例外をキャッチする瞬間を与えることでした。

どんなアイデアでも大歓迎

ありがとう!

import sys
def interruptable_input(text=''):
  '''Takes raw input, but accepts keyboard interrupt'''
  try:
    return raw_input(text)
  except KeyboardInterrupt:
    print "Interrupted by user"
    sys.exit()
4

2 に答える 2

2

以下に絞り込みました。

import sys
text=''
try:
    print raw_input(text)
except KeyboardInterrupt:
    print "Interrupted by user"
    sys.exit()

Python 2.7を使用してコマンドラインで実行すると、これは完全に機能します。コンソールに入力を入力でき、ctrl + cを押すと、ユーザーによって中断されて出力されます

編集: 最初はあなたの質問を読み違えましたが、あなたの例のメソッドを使用して別のメソッドから呼び出すと、結果は同じです

于 2016-03-24T15:40:14.787 に答える