それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Python で Ctrl+C のシグナルハンドラをやる

ctrl+ c でシグナルを取得したい

たとえばファイルを作っている時に、途中で中断するとか。

その際に、途中のファイルや作業用ディレクトリを消したい。などと

KeyboardInterrupt を監視する。

一番カンタンなのが、KeyboardInterrupt を見ることなんだ。


try : 
  os.chdir(workdir)
  sleep(1000)
except KeyboardInterrupt  :
  print ( "KeyboardInterrupt\n" )

finally:
    if os.path.exists( work_dir ) :
        shutil.rmtree (work_dir )
    os.chdir(os.path.expanduser('~'))
    pprint( os.getcwd( ) )

try except finally でできるけど。

KeyboardInterrupt は Ctrl+C なので、シグナルを受けてるわけでもないんですよね。。。

kill term された時はどうするんだよう。。。

参考資料

Handling Ctrl-C cleanly in Python - ØMQ - The Guide