Hi all, I wrote the following code since I want to try using a decorator to install signal handler:
## The test.py script ################# import os import time import signal def sigHandler(sid): def handler(f): signal.signal(sid, f) return f return handler class Test(object): @sigHandler(signal.SIGTERM) def _sigHandler(self, signalId, currentFrame): print "Received:", signalId if __name__ == "__main__": print "pid:", os.getpid() t = Test() time.sleep(300) # From terminal, say A #################### $ python test.py pid: 1234 # From terminal, say B ################### $ kill -TERM 1234 After issuing the kill command from terminal B, the process of test.py from terminal A is terminated. Python print out some exception message as following: Traceback (most recent call last): File "a.py", line 22, in <module> time.sleep(300) TypeError: _sigHandler() takes exactly 3 arguments (2 given) At a guess, I think the decorator I defined did not pass the 'self' as the first argument to _sigHandler() method, did it? And I have no idea of how to write a correct one. Any suggestion? -- http://mail.python.org/mailman/listinfo/python-list