1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | # Test the signal module from test.test_support import verbose, TestSkipped, TestFailed import signal import os, sys, time import traceback import java verbose=1 if verbose: x = '-x' else: x = '+x' pid = java.lang.management.ManagementFactory.getRuntimeMXBean().getName().split('@')[0] # Shell script that will send us asynchronous signals script = """ ( set %(x)s #sleep 2 #kill -s TRAP %(pid)d #sleep 2 #kill -s INT %(pid)d sleep 2 kill -s WINCH %(pid)d ) & """ % vars() def handlerForSIGTRAP(*args): if verbose: print "handlerForSIGTRAP", args HandlerBCalled = "HandlerBCalled" # Exception def handlerForSIGINT(*args): if verbose: print "handlerB", args raise HandlerBCalled, args #signal.alarm(20) # Entire test lasts at most 20 sec. signal.signal(signal.SIGTRAP, handlerForSIGTRAP) signal.signal(signal.SIGINT, handlerForSIGINT) signal.signal(signal.SIGWINCH, signal.SIG_IGN) #signal.signal(3, signal.SIG_IGN) # JVM doesn't pass SIGQUIT to us #signal.signal(signal.SIGALRM, signal.default_int_handler) os.system(script) #wait a bit since we don't have signal.pause() yet for x in range(4): print x time.sleep(1) |
Powered by Pylons - Contact Administrators
Comments (0)
You must login before you can comment.