GNU/Linux >> Linux の 問題 >  >> Linux

Python - すべてのシグナルをトラップする

Python 3.5 の時点で、シグナル定数は列挙型として定義され、より適切なアプローチが可能になります:

import signal

catchable_sigs = set(signal.Signals) - {signal.SIGKILL, signal.SIGSTOP}
for sig in catchable_sigs:
    signal.signal(sig, print)  # Substitute handler of choice for `print`

シグナル モジュール内のシグナルをループしてセットアップするだけです。

for i in [x for x in dir(signal) if x.startswith("SIG")]:
  try:
    signum = getattr(signal,i)
    signal.signal(signum,sighandler)
  except (OSError, RuntimeError) as m: #OSError for Python3, RuntimeError for 2
    print ("Skipping {}".format(i))

Linux
  1. LinuxファイルシステムですべてのPythonファイルを検索しますか?

  2. Linux シグナル – シグナル (SIGINT、SIGKILL、SIGSTOP など) をキャッチする C プログラムの例

  3. Linux シグナルの基礎 – パート I

  1. Bashで受信したシグナル名を特定する

  2. Linux でシグナルを使用した IPC

  3. signalfd() がシグナルを見逃す

  1. プロセス グループのすべてのメンバーにシグナルを送信する最良の方法は何ですか?

  2. osx と centos にインストールされている python のすべてのバージョンを確認する方法

  3. pgrep によって返されたすべてのプロセスを強制終了する方法