mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 02:15:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			910 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			910 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Test the signal module
 | |
| 
 | |
| import signal
 | |
| import os
 | |
| 
 | |
| 
 | |
| pid = os.getpid()
 | |
| 
 | |
| # Shell script that will send us asynchronous signals
 | |
| script = """
 | |
| (
 | |
| 	set -x
 | |
| 	sleep 2
 | |
| 	kill -5 %(pid)d
 | |
| 	sleep 2
 | |
| 	kill -2 %(pid)d
 | |
| 	sleep 2
 | |
| 	kill -3 %(pid)d
 | |
| ) &
 | |
| """ % vars()
 | |
| 
 | |
| def handlerA(*args):
 | |
| 	print "handlerA", args
 | |
| 
 | |
| HandlerBCalled = "HandlerBCalled"	# Exception
 | |
| 
 | |
| def handlerB(*args):
 | |
| 	print "handlerB", args
 | |
| 	raise HandlerBCalled, args
 | |
| 
 | |
| signal.alarm(20)			# Entire test lasts at most 20 sec.
 | |
| signal.signal(5, handlerA)
 | |
| signal.signal(2, handlerB)
 | |
| signal.signal(3, signal.SIG_IGN)
 | |
| signal.signal(signal.SIGALRM, signal.default_int_handler)
 | |
| 
 | |
| os.system(script)
 | |
| 
 | |
| print "starting pause() loop..."
 | |
| 
 | |
| try:
 | |
| 	while 1:
 | |
| 		print "call pause()..."
 | |
| 		try:
 | |
| 			signal.pause()
 | |
| 			print "pause() returned"
 | |
| 		except HandlerBCalled:
 | |
| 			print "HandlerBCalled exception caught"
 | |
| except KeyboardInterrupt:
 | |
| 	print "KeyboardInterrupt (assume the alarm() went off)"
 | 
