CTRLスクリプトで+を正しく処理したいのですが、Cいくつかの例を読んでいますが、決定論的な動作を実現できません。たとえば、次のスクリプトがあるとします。
1 import signal
2 import time
3
4 def sigint_handler(signum, frame):
5 raise Exception('captured ctrl+c')
6
7 signal.signal(signal.SIGINT, sigint_handler)
8
9 c = True
10 while c:
11 try:
12 pass
13 except KeyboardInterrupt as e:
14 print 'captured keyboardexception'
15 print str(e)
16 except Exception as e:
17 print 'captured exception'
18 print str(e)
19 c = False
これら2つの異なる出力を取得できます
$ python ctrlc.py
^Ccaptured exception
captured ctrl+c
$ python ctrlc.py
^CTraceback (most recent call last):
File "ctrlc.py", line 12, in <module>
pass
File "ctrlc.py", line 5, in sigint_handler
raise Exception('captured ctrl+c')
Exception: captured ctrl+c
二重の例外処理とシグナル処理なしで、さまざまな構成を試しましたが、常に別の動作を得ることができますCTRL+C