Python signal.sigwait() Examples
The following are 10
code examples of signal.sigwait().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
signal
, or try the search function
.
Example #1
Source File: container.py From benchexec with Apache License 2.0 | 5 votes |
def wait_for_child_and_forward_signals(child_pid, process_name): """Wait for a child to terminate and in the meantime forward all signals that the current process receives to this child. @return a tuple of exit code and resource usage of the child as given by os.waitpid """ block_all_signals() while True: logging.debug("Waiting for signals") signum = signal.sigwait(_ALL_SIGNALS) if signum == signal.SIGCHLD: pid, exitcode, ru_child = os.wait4(-1, os.WNOHANG) while pid != 0: if pid == child_pid: return exitcode, ru_child else: logging.debug("Received unexpected SIGCHLD for PID %s", pid) pid, exitcode, ru_child = os.wait4(-1, os.WNOHANG) else: _forward_signal(signum, child_pid, process_name)
Example #2
Source File: test_signal.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_sigwait(self): self.wait_helper(signal.SIGALRM, ''' def test(signum): signal.alarm(1) received = signal.sigwait([signum]) assert isinstance(received, signal.Signals), received if received != signum: raise Exception('received %s, not %s' % (received, signum)) ''')
Example #3
Source File: test_signal.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_sigwait_thread(self): # Check that calling sigwait() from a thread doesn't suspend the whole # process. A new interpreter is spawned to avoid problems when mixing # threads and fork(): only async-safe functions are allowed between # fork() and exec(). assert_python_ok("-c", """if True: import os, threading, sys, time, signal # the default handler terminates the process signum = signal.SIGUSR1 def kill_later(): # wait until the main thread is waiting in sigwait() time.sleep(1) os.kill(os.getpid(), signum) # the signal must be blocked by all the threads signal.pthread_sigmask(signal.SIG_BLOCK, [signum]) killer = threading.Thread(target=kill_later) killer.start() received = signal.sigwait([signum]) if received != signum: print("sigwait() received %s, not %s" % (received, signum), file=sys.stderr) sys.exit(1) killer.join() # unblock the signal, which should have been cleared by sigwait() signal.pthread_sigmask(signal.SIG_UNBLOCK, [signum]) """)
Example #4
Source File: test_signal.py From ironpython3 with Apache License 2.0 | 5 votes |
def test_sigwait(self): self.wait_helper(signal.SIGALRM, ''' def test(signum): signal.alarm(1) received = signal.sigwait([signum]) if received != signum: raise Exception('received %s, not %s' % (received, signum)) ''')
Example #5
Source File: test_signal.py From ironpython3 with Apache License 2.0 | 5 votes |
def test_sigwait_thread(self): # Check that calling sigwait() from a thread doesn't suspend the whole # process. A new interpreter is spawned to avoid problems when mixing # threads and fork(): only async-safe functions are allowed between # fork() and exec(). assert_python_ok("-c", """if True: import os, threading, sys, time, signal # the default handler terminates the process signum = signal.SIGUSR1 def kill_later(): # wait until the main thread is waiting in sigwait() time.sleep(1) os.kill(os.getpid(), signum) # the signal must be blocked by all the threads signal.pthread_sigmask(signal.SIG_BLOCK, [signum]) killer = threading.Thread(target=kill_later) killer.start() received = signal.sigwait([signum]) if received != signum: print("sigwait() received %s, not %s" % (received, signum), file=sys.stderr) sys.exit(1) killer.join() # unblock the signal, which should have been cleared by sigwait() signal.pthread_sigmask(signal.SIG_UNBLOCK, [signum]) """)
Example #6
Source File: test_signal.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def test_sigwait(self): self.wait_helper(signal.SIGALRM, ''' def test(signum): signal.alarm(1) received = signal.sigwait([signum]) assert isinstance(received, signal.Signals), received if received != signum: raise Exception('received %s, not %s' % (received, signum)) ''')
Example #7
Source File: test_signal.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def test_sigwait_thread(self): # Check that calling sigwait() from a thread doesn't suspend the whole # process. A new interpreter is spawned to avoid problems when mixing # threads and fork(): only async-safe functions are allowed between # fork() and exec(). assert_python_ok("-c", """if True: import os, threading, sys, time, signal # the default handler terminates the process signum = signal.SIGUSR1 def kill_later(): # wait until the main thread is waiting in sigwait() time.sleep(1) os.kill(os.getpid(), signum) # the signal must be blocked by all the threads signal.pthread_sigmask(signal.SIG_BLOCK, [signum]) killer = threading.Thread(target=kill_later) killer.start() received = signal.sigwait([signum]) if received != signum: print("sigwait() received %s, not %s" % (received, signum), file=sys.stderr) sys.exit(1) killer.join() # unblock the signal, which should have been cleared by sigwait() signal.pthread_sigmask(signal.SIG_UNBLOCK, [signum]) """)
Example #8
Source File: swift_kernel.py From swift-jupyter with Apache License 2.0 | 5 votes |
def run(self): try: while True: signal.sigwait([signal.SIGINT]) self.kernel.process.SendAsyncInterrupt() except Exception as e: self.kernel.log.error('Exception in SIGINTHandler: %s' % str(e))
Example #9
Source File: test_signal.py From android_universal with MIT License | 5 votes |
def test_sigwait(self): self.wait_helper(signal.SIGALRM, ''' def test(signum): signal.alarm(1) received = signal.sigwait([signum]) assert isinstance(received, signal.Signals), received if received != signum: raise Exception('received %s, not %s' % (received, signum)) ''')
Example #10
Source File: test_signal.py From android_universal with MIT License | 5 votes |
def test_sigwait_thread(self): # Check that calling sigwait() from a thread doesn't suspend the whole # process. A new interpreter is spawned to avoid problems when mixing # threads and fork(): only async-safe functions are allowed between # fork() and exec(). assert_python_ok("-c", """if True: import os, threading, sys, time, signal # the default handler terminates the process signum = signal.SIGUSR1 def kill_later(): # wait until the main thread is waiting in sigwait() time.sleep(1) os.kill(os.getpid(), signum) # the signal must be blocked by all the threads signal.pthread_sigmask(signal.SIG_BLOCK, [signum]) killer = threading.Thread(target=kill_later) killer.start() received = signal.sigwait([signum]) if received != signum: print("sigwait() received %s, not %s" % (received, signum), file=sys.stderr) sys.exit(1) killer.join() # unblock the signal, which should have been cleared by sigwait() signal.pthread_sigmask(signal.SIG_UNBLOCK, [signum]) """)