GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Python - Trap alle Signale

Ab Python 3.5 sind die Signalkonstanten als Enum definiert, was einen schöneren Ansatz ermöglicht:

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`

Du könntest die Signale einfach im Signalmodul durchschleifen und aufbauen.

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. Alle Python-Dateien im Linux-Dateisystem finden?

  2. Was ist der beste Weg, um ein Signal an alle Mitglieder einer Prozessgruppe zu senden?

  3. UDP-Broadcast auf allen Schnittstellen

  4. Identifizieren des empfangenen Signalnamens in Bash

  5. IPC mit Signalen unter Linux

So installieren Sie Python 3 unter Windows 10

Python if..else-Anweisung

Linux Bash Scripting Part5 – Signale und Jobs

So überprüfen Sie alle Versionen von Python, die auf OSX und Centos installiert sind

Welche Signalnummern funktionieren mit dem Kill-Befehl?

Kann das Signal ignoriert (verloren) werden?