home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyos2bin.zip / Lib / test / test_signal.py < prev    next >
Text File  |  1997-11-22  |  1KB  |  67 lines

  1. # Test the signal module
  2. from test_support import verbose
  3. import signal
  4. import os
  5. import sys
  6.  
  7. if sys.platform[:3] in ('win', 'os2'):
  8.     raise ImportError, "Can't test signal on %s" % sys.platform[:3]
  9.  
  10. if verbose:
  11.     x = '-x'
  12. else:
  13.     x = '+x'
  14. pid = os.getpid()
  15.  
  16. # Shell script that will send us asynchronous signals
  17. script = """
  18.  (
  19.     set %(x)s
  20.     sleep 2
  21.     kill -5 %(pid)d
  22.     sleep 2
  23.     kill -2 %(pid)d
  24.     sleep 2
  25.     kill -3 %(pid)d
  26.  ) &
  27. """ % vars()
  28.  
  29. def handlerA(*args):
  30.     if verbose:
  31.         print "handlerA", args
  32.  
  33. HandlerBCalled = "HandlerBCalled"    # Exception
  34.  
  35. def handlerB(*args):
  36.     if verbose:
  37.         print "handlerB", args
  38.     raise HandlerBCalled, args
  39.  
  40. signal.alarm(20)            # Entire test lasts at most 20 sec.
  41. signal.signal(5, handlerA)
  42. signal.signal(2, handlerB)
  43. signal.signal(3, signal.SIG_IGN)
  44. signal.signal(signal.SIGALRM, signal.default_int_handler)
  45.  
  46. os.system(script)
  47.  
  48. print "starting pause() loop..."
  49.  
  50. try:
  51.     while 1:
  52.         if verbose:
  53.             print "call pause()..."
  54.         try:
  55.             signal.pause()
  56.             if verbose:
  57.                 print "pause() returned"
  58.         except HandlerBCalled:
  59.             if verbose:
  60.                 print "HandlerBCalled exception caught"
  61.             else:
  62.                 pass
  63.                 
  64. except KeyboardInterrupt:
  65.     if verbose:
  66.         print "KeyboardInterrupt (assume the alarm() went off)"
  67.