| #!/usr/bin/env python |
| # Displays all signals, their values, and their handlers. |
| from __future__ import print_function |
| import signal |
| FMT = '{name:<10} {value:<5} {description}' |
| |
| # header |
| print(FMT.format(name='name', value='value', description='description')) |
| print('-' * (33)) |
| |
| for name, value in [(signal_name, getattr(signal, signal_name)) |
| for signal_name in dir(signal) |
| if signal_name.startswith('SIG') |
| and not signal_name.startswith('SIG_')]: |
| try: |
| handler = signal.getsignal(value) |
| except ValueError: |
| # FreeBSD: signal number out of range |
| handler = 'out of range' |
| description = { |
| signal.SIG_IGN: "ignored(SIG_IGN)", |
| signal.SIG_DFL: "default(SIG_DFL)" |
| }.get(handler, handler) |
| print(FMT.format(name=name, value=value, description=description)) |