開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python 3.4 (プログラミング言語)
初めてのPerl 第6版 (Randal L. Schwartz (著)、brian d foy (著)、Tom Phoenix (著)、近藤 嘉雪 (翻訳)、オライリージャパン)の16章(プロセス管理)の16.9(練習問題)4.をPythonで考えてみる。
16.9(練習問題)4.
コード(BBEdit, Emacs)
sample3.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- import sys import signal import time def myHupHandler(): count = 0 def inner(sig, stack_frame): nonlocal count count += 1 print('SIGHUP {0}'.format(count)) return inner def myContHandler(): count = 0 def inner(sig, stack_frame): nonlocal count count += 1 print('SIGCONT {0}'.format(count)) return inner def myIntHandler(sig, stack_frame): print('SIGINT') sys.exit(0) for sig, handler in [(signal.SIGHUP, myHupHandler()), (signal.SIGCONT, myContHandler()), (signal.SIGINT, myIntHandler)]: signal.signal(sig, handler) while True: time.sleep(1)
入出力結果(Terminal, IPython)
$ ./sample4.py & [1] 56600 $ kill -HUP 56600 $ SIGHUP 1 $ kill -HUP 56600 $ SIGHUP 2 $ kill -CONT 56600 $ SIGCONT 1 $ kill -HUP 56600 $ SIGHUP 3 $ kill -CONT 56600 $ SIGCONT 2 $ kill -INT 56600 $ SIGINT [1]+ Done ./sample4.py $ ps PID TTY TIME CMD 56400 ttys001 0:00.11 /opt/local/bin/bash --noediting -i $
0 コメント:
コメントを投稿