LoginSignup
3
3

More than 3 years have passed since last update.

pythonで他プロセスへシグナルを送る方法

Last updated at Posted at 2019-06-18

シグナル送信

pidを元に指定されたプロセスへSIGKILLを送信

def do_kill_process(pid):
    try:
        os.kill(int(pid), signal.SIGKILL) # kill(pid, sig)
    except OSError as e:
        if e.errno != errno.ESRCH: #「No such process」じゃない場合
            raise e

利用可能なシグナルはsigkill以外にも多数あるので下記の公式ドキュメントがわかりやすかったです。
signal --- 非同期イベントにハンドラを設定する

シグナルハンドラ

pythonで書くシグナルハンドラの例です。
今回の例ではSIGINTをハンドリングしています。

def func(num, frame):
    print (num, str(frame))

signal.signal(signal.SIGINT, func)
for i in range(100):
   sleep(10)

上記、実行中にCtr-Cを入力しても受けとたシグナルナンバーとスタックフレームが出力されるだけとなります。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3