pythonでシグナルの捕獲

signalモジュールを使用すると、プロセスに送信されたシグナルを捕獲して任意の動作ができる。

以下は、TERMシグナルをゲットして、文字列を表示した例。

$ cat waite_signal.py 
#! /usr/bin/python

import signal

def handler(signum, frame):
    print 'signal(%s) gettchu!' % signum

signal.signal(signal.SIGTERM, handler)

signal.pause()
$ ./waite_signal.py &
[1] 387
$ kill 387
signal(15) gettchu!


さすがにKILLシグナルはゲットできないみたい。

>>> import signal
>>> def handler(signum, frame):
...         print 'signal(%s) gettchu!' % signum
... 
>>> signal.signal(signal.SIGKILL, handler)
------------------------------------------------------------
Traceback (most recent call last):
  File "<ipython console>", line 1, in <module>
RuntimeError: (22, 'Invalid argument')