signal and threading
~levon
Levon.Ghazaryan at gmail.com
Mon Aug 25 09:37:12 EDT 2008
Hello group,
in following example, a signal handler is registered and a thread
started. if I call self.doSomethin() directly
the code works as I would expect. as i send a SIGINT shutdown is
called and the script terminates.
as soon as I call doSomething() in a thread the the SIGINT handler is
never called again and
i have to terminate the script with a SIGTERM or SIGKILL.
well, i would expect the handler to be called in both cases, am i
missing something?
by the way. calling os.kill(os.getpid(), signal.SIGINT) works as I
would expect, what
don't is kill -s SIGINT pid # where pid is the actual process id
the code:
class Runner(object):
def __init__(self):
print os.getpid()
self.shd = False
signal.signal(signal.SIGINT, self.shutdown)
threading.Thread(target=self.doSomething).start()
# the following works fine:
#os.kill(os.getpid(), signal.SIGINT)
def doSomething(self):
while not self.shd:
pass
def shutdown(self, signo, frm):
self.shd = True
if __name__ == '__main__':
Runner()
~levon
More information about the Python-list
mailing list