2014年9月2日火曜日

開発環境

初めての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 コメント:

コメントを投稿