#!/usr/bin/python import threading, signal, time true = 0 def trueAction(): global true if true: true =0 print "true off" else: true=1 print "true on" class MainThread( threading.Thread ): def run( self ): loop() def signalHandler(signal, frame): global true while true: print "waiting on true" time.sleep(1) print "true now off. do clean up now" raise SystemExit, u"exiting due to exit signal %s" % signal def loop(): while 1: time.sleep(3) trueAction() def main(): ## MainThread().start() loop() if __name__ == '__main__': signal.signal(signal.SIGINT, signalHandler) main()