ignore ctrl-c in py2 wrapper

This commit is contained in:
j 2017-05-26 10:47:13 +02:00
parent 8bd4cd6305
commit d641ea80a8

View file

@ -1,7 +1,32 @@
#!/usr/bin/env python #!/usr/bin/env python
import os import os
import signal
import sys import sys
class DelayedSignalHandler(object):
def __init__(self, managed_signals):
self.managed_signals = managed_signals
self.managed_signals_queue = list()
self.old_handlers = dict()
def _handle_signal(self, caught_signal, frame):
#self.managed_signals_queue.append((caught_signal, frame))
pass
def __enter__(self):
for managed_signal in self.managed_signals:
old_handler = signal.signal(managed_signal, self._handle_signal)
self.old_handlers[managed_signal] = old_handler
def __exit__(self, *_):
for managed_signal, old_handler in self.old_handlers.iteritems():
signal.signal(managed_signal, old_handler)
'''
for managed_signal, frame in self.managed_signals_queue:
self.old_handlers[managed_signal](managed_signal, frame)
'''
root_dir = os.path.normpath(os.path.abspath(os.path.dirname(__file__))) root_dir = os.path.normpath(os.path.abspath(os.path.dirname(__file__)))
os.chdir(root_dir) os.chdir(root_dir)
@ -10,7 +35,9 @@ python3 = os.path.normpath(os.path.join(root_dir, '..', 'bin', 'python3'))
if os.path.exists(python3) and sys.version_info[0] == 2: if os.path.exists(python3) and sys.version_info[0] == 2:
import subprocess import subprocess
cmd = [python3] + sys.argv cmd = [python3] + sys.argv
sys.exit(subprocess.call(cmd)) with DelayedSignalHandler((signal.SIGINT, signal.SIGTERM, signal.SIGHUP)):
exit_value = subprocess.call(cmd)
sys.exit(exit_value)
# using virtualenv's activate_this.py to reorder sys.path # using virtualenv's activate_this.py to reorder sys.path
activate_this = os.path.normpath(os.path.join(root_dir, '..', 'bin', 'activate_this.py')) activate_this = os.path.normpath(os.path.join(root_dir, '..', 'bin', 'activate_this.py'))