dumb-init/tests/lib/print_signals.py

40 lines
789 B
Python
Raw Normal View History

2015-09-12 01:57:22 +03:00
#!/usr/bin/env python
"""Print received signals to stdout.
Since all signals are printed and otherwise ignored, you'll need to send
SIGKILL (kill -9) to this process to actually end it.
"""
from __future__ import print_function
import signal
import sys
import time
from tests.lib.testing import CATCHABLE_SIGNALS
print_queue = []
def unbuffered_print(line):
sys.stdout.write('{}\n'.format(line))
sys.stdout.flush()
def print_signal(signum, _):
print_queue.append(signum)
if __name__ == '__main__':
for signum in CATCHABLE_SIGNALS:
signal.signal(signum, print_signal)
unbuffered_print('ready')
# loop forever just printing signals
while True:
if print_queue:
unbuffered_print(print_queue.pop())
time.sleep(0.01)