On Mon, 06 Jul 2009 15:02:26 -0700, Michael Mossey wrote: > On Jul 6, 2:47 pm, Philip Semanchuk <phi...@semanchuk.com> wrote: >> On Jul 6, 2009, at 5:37 PM, Michael Mossey wrote: >> >> > What is required in a python program to make sure it catches a >> > control- >> > c on the command-line? Do some i/o? The OS here is Linux. >> >> You can use a try/except to catch a KeyboardInterrupt exception, or you >> can trap it using the signal >> module:http://docs.python.org/library/signal.html >> >> You want to trap SIGINT. >> >> HTH >> Philip > > Thanks to both of you. However, my question is also about whether I need > to be doing i/o or some similar operation for my program to notice in > any shape or form that Control-C has been pressed. In the past, I've > written Python programs that go about their business ignoring Ctrl-C.
I bet that somewhere in your code you have something like: for x in really_big_list: try: long_running_process(x) except: continue If that's what you're doing, stop! The correct way is: for x in really_big_list: try: long_running_process(x) except Exception: # Let KeyboardInterrupt and SystemExit through. continue or even: for x in really_big_list: try: long_running_process(x) except (KeyboardInterrupt, SystemExit): print "User requested exit... shutting down now" cleanup() raise except Exception: continue -- Steven -- http://mail.python.org/mailman/listinfo/python-list