ignore ctrl-c in py2 wrapper
This commit is contained in:
parent
8bd4cd6305
commit
d641ea80a8
1 changed files with 28 additions and 1 deletions
|
@ -1,7 +1,32 @@
|
|||
#!/usr/bin/env python
|
||||
import os
|
||||
import signal
|
||||
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__)))
|
||||
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:
|
||||
import subprocess
|
||||
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
|
||||
activate_this = os.path.normpath(os.path.join(root_dir, '..', 'bin', 'activate_this.py'))
|
||||
|
|
Loading…
Reference in a new issue