Page List

Search on the blog

2017年10月21日土曜日

Signal Handler in Python

PythonでSignal Handlerを書いて遊んでみた。

プログラム
Python 3で動作確認してます。
import signal
import time
def sigint_handler(num, frame):
print("received SIGINT!")
def sigtstp_handler(num, frame):
print("received SIGTSTP!")
def sigterm_handler(num, frame):
print("received SIGTERM!")
def work():
while True:
time.sleep(1)
print("this is a signal handler sample!")
def main():
signal.signal(signal.SIGINT, sigint_handler)
signal.signal(signal.SIGTSTP, sigtstp_handler)
signal.signal(signal.SIGTERM, sigterm_handler)
work()
if __name__ == '__main__':
main()
view raw sample.py hosted with ❤ by GitHub
遊び方
まず上記のPythonプログラムを起動します。
$ python sample.py

プログラムを起動したら以下の表を参考にシグナルを送ってみてください。
シグナル キーボードから コマンドラインから
SIGINT ctrl + c kill -INT プロセス番号
SIGTSTP ctrl + z kill -TSTP プロセス番号
SIGTERM - kill プロセス番号
SIGKILL - kill -KILL プロセス番号

プログラムを停止したい場合は、SIGKILLを送ってください。
プログラムのプロセス番号は以下のコマンドで調べることができます。
$ pgrep -f "python sample.py"

0 件のコメント:

コメントを投稿