blob: bfcf517ac9aa534f3836e99655d3af41adf08f7f [file] [log] [blame]
Guido van Rossum4f17e3e1995-03-16 15:07:38 +00001# Test the signal module
2
3import signal
4import os
5
6
7pid = os.getpid()
8
9# Shell script that will send us asynchronous signals
10script = """
11(
12 set -x
13 sleep 2
14 kill -5 %(pid)d
15 sleep 2
16 kill -2 %(pid)d
17 sleep 2
18 kill -3 %(pid)d
19) &
20""" % vars()
21
22def handlerA(*args):
23 print "handlerA", args
24
25HandlerBCalled = "HandlerBCalled" # Exception
26
27def handlerB(*args):
28 print "handlerB", args
29 raise HandlerBCalled, args
30
31signal.alarm(20) # Entire test lasts at most 20 sec.
32signal.signal(5, handlerA)
33signal.signal(2, handlerB)
34signal.signal(3, signal.SIG_IGN)
35signal.signal(signal.SIGALRM, signal.default_int_handler)
36
37os.system(script)
38
39print "starting pause() loop..."
40
41try:
42 while 1:
43 print "call pause()..."
44 try:
45 signal.pause()
46 print "pause() returned"
47 except HandlerBCalled:
48 print "HandlerBCalled exception caught"
49except KeyboardInterrupt:
50 print "KeyboardInterrupt (assume the alarm() went off)"