blob: 3619b96e5a2fc71ec3a88ead8bdfb45c0de22810 [file] [log] [blame]
Guido van Rossum5c971671996-07-22 15:23:25 +00001# Test the signal module
Guido van Rossum228b8e81997-04-02 06:13:34 +00002from test_support import verbose
Guido van Rossum5c971671996-07-22 15:23:25 +00003import signal
4import os
5
6
Guido van Rossum228b8e81997-04-02 06:13:34 +00007if verbose:
8 x = '-x'
9else:
10 x = '+x'
Guido van Rossum5c971671996-07-22 15:23:25 +000011pid = os.getpid()
12
13# Shell script that will send us asynchronous signals
14script = """
Guido van Rossum228b8e81997-04-02 06:13:34 +000015 (
16 set %(x)s
Guido van Rossum5c971671996-07-22 15:23:25 +000017 sleep 2
18 kill -5 %(pid)d
19 sleep 2
20 kill -2 %(pid)d
21 sleep 2
22 kill -3 %(pid)d
Guido van Rossum228b8e81997-04-02 06:13:34 +000023 ) &
Guido van Rossum5c971671996-07-22 15:23:25 +000024""" % vars()
25
26def handlerA(*args):
Guido van Rossum228b8e81997-04-02 06:13:34 +000027 if verbose:
28 print "handlerA", args
Guido van Rossum5c971671996-07-22 15:23:25 +000029
30HandlerBCalled = "HandlerBCalled" # Exception
31
32def handlerB(*args):
Guido van Rossum228b8e81997-04-02 06:13:34 +000033 if verbose:
34 print "handlerB", args
Guido van Rossum5c971671996-07-22 15:23:25 +000035 raise HandlerBCalled, args
36
37signal.alarm(20) # Entire test lasts at most 20 sec.
38signal.signal(5, handlerA)
39signal.signal(2, handlerB)
40signal.signal(3, signal.SIG_IGN)
41signal.signal(signal.SIGALRM, signal.default_int_handler)
42
43os.system(script)
44
45print "starting pause() loop..."
46
47try:
48 while 1:
Guido van Rossum228b8e81997-04-02 06:13:34 +000049 if verbose:
50 print "call pause()..."
Guido van Rossum5c971671996-07-22 15:23:25 +000051 try:
52 signal.pause()
Guido van Rossum228b8e81997-04-02 06:13:34 +000053 if verbose:
54 print "pause() returned"
Guido van Rossum5c971671996-07-22 15:23:25 +000055 except HandlerBCalled:
Guido van Rossum228b8e81997-04-02 06:13:34 +000056 if verbose:
57 print "HandlerBCalled exception caught"
58 else:
59 pass
60
Guido van Rossum5c971671996-07-22 15:23:25 +000061except KeyboardInterrupt:
Guido van Rossum228b8e81997-04-02 06:13:34 +000062 if verbose:
63 print "KeyboardInterrupt (assume the alarm() went off)"