GNU/Linux >> Belajar Linux >  >> Linux

Python - Jebak semua sinyal

Pada Python 3.5, konstanta sinyal didefinisikan sebagai enum, memungkinkan pendekatan yang lebih baik:

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`

Anda bisa mengulang sinyal di modul sinyal dan menyiapkannya.

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. Temukan Semua File Python Di Sistem File Linux?

  2. Sinyal Linux – Contoh Program C untuk Menangkap Sinyal (SIGINT, SIGKILL, SIGSTOP, dll.)

  3. Dasar-Dasar Sinyal Linux – Bagian I

  1. Apa cara terbaik untuk mengirim sinyal ke semua anggota grup proses?

  2. UDP-Broadcast di semua antarmuka

  3. Antrian sinyal di C

  1. Siapa yang menggunakan sinyal realtime POSIX dan mengapa?

  2. Cara mematikan semua proses yang dikembalikan oleh pgrep

  3. Bisakah sinyal diabaikan (hilang)?