I’m trying to create a simple signal handler for my Python application but the value of exiting does not change even when I use Ctrl-C. If I put exiting, out of the main function the value changes. How can I change the value of exiting when it is inside main()? Currently, the program always prints
False no matter if I press Ctrl-C or not.
import signal
import time
def main():
exiting = False
def handler(f, b):
global exiting
exiting = True
return
signal.signal(signal.SIGINT, handler)
while True:
print(exiting)
time.sleep(1)
if __name__ == "__main__":
main()
Advertisement
Answer
global should be included in the main function too.
import signal
import time
def main():
global exiting
exiting = False
def handler(f, b):
global exiting
exiting = True
return
signal.signal(signal.SIGINT, handler)
while True:
print(exiting)
time.sleep(1)
if __name__ == "__main__":
main()