次のようにすることで、Pythonスクリプトの実行中はCtrl-Cを受け付けないようにできます。 import signal import time ## SIGINTシグナルを無視 signal.signal(signal.SIGINT, signal.SIG_IGN) ## 15秒間待ち続ける(Ctrl-Cで止められない) time.sleep(15) この方法はシグナルを扱うOSであれば動作するはずです。しかしOSによってはシステムコール処理中にCtrl-Cを受け付けてしまうため、Pythonスクリプトが中断されてしまうのを防げない可能性があります。 Windowsの場合 たとえばWindowsでは、先のプログラムは実行できますが、次のようにCtrl-Cで中断できてしまいます。 Traceback (most recent call last): File "test.py", li
10.1 SIGUSR1とSIGUSR2を捕捉する簡単なプログラム import signal def sigusr(signo, frame): # one signal handler for both signals print "received", "SIGUSR1" if signo == signal.SIGUSR1 else "SIGUSR2" signal.signal(signal.SIGUSR1, sigusr) signal.signal(signal.SIGUSR2, sigusr) while True: signal.pause() 10.2 シグナルハンドラからの再入不可能な関数の呼び出し import signal, pwd def my_alarm(signo, frame): print "in signal handler" rec = pwd.ge
経緯 最近書いているプログラムで無限ループするワーカースレッドを立てまくるものがあって, それを signal で安全に終了させる手段が知りたかった. 課題プログラム 以下のようなプログラムがあります. import threading import time def loopfunc(event): print "Thread Started" while not event.isSet(): time.sleep(1) print "Thread End" def main() : threads = [] e = threading.Event() for x in range(10): threads.append(threading.Thread(target=loopfunc, args=(e,))) threads[x].start() for th in threads:
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く