こんなスクリプトを
import signal, os import time def handler(signum, frame): print signum print "i am heavy..." # なにか重い処理 time.sleep(2) print "oops." signal.signal(signal.SIGUSR1, handler) signal.pause()
こんなシェルスクリプトで叩こうがうまいこと動かなかった(↑のoops.
が出力される前に死ぬ)。
#!/bin/bash -euxv python /Users/develop43/workspace/hiraro/test.py & kill -s SIGUSR1 $!
こうしたら動いた。
つまり、シグナルハンドラ登録後にシグナル送れよ、と。
#!/bin/bash -euxv python /Users/develop43/workspace/hiraro/test.py & # ちょっと待つ sleep 3 kill -s SIGUSR1 $!