You should likely take a look at Python Signal Handlers (specifically signal.CTRL_C_EVENT).
Here is a more-complete answer... NOTE: You can make your processes fairly unkillable by using such things.
#!/usr/bin/env python
import signal, os
import time
def handler( signum, frame ):
print "Signal handler caught", signum, "@", time.ctime()
if signum == 2:
raise "Caught Signal 2 - Exiting"
#
# Windows Supported Values
#
#signal.signal( signal.SIGABRT, handler )
#signal.signal( signal.SIGFPE, handler )
#signal.signal( signal.SIGILL, handler )
#signal.signal( signal.SIGINT, handler )
#signal.signal( signal.SIGSEGV, handler )
#signal.signal( signal.SIGTERM, handler )
#
# UNIX Supported Values (YMMV)
#
signal.signal( signal.SIGABRT, handler )
signal.signal( signal.SIGALRM, handler )
signal.signal( signal.SIGBUS, handler )
signal.signal( signal.SIGCHLD, handler )
signal.signal( signal.SIGCLD, handler )
signal.signal( signal.SIGCONT, handler )
signal.signal( signal.SIGFPE, handler )
signal.signal( signal.SIGHUP, handler )
signal.signal( signal.SIGILL, handler )
signal.signal( signal.SIGINT, handler )
signal.signal( signal.SIGIO, handler )
signal.signal( signal.SIGIOT, handler )
#signal.signal( signal.SIGKILL, handler )
signal.signal( signal.SIGPIPE, handler )
signal.signal( signal.SIGPOLL, handler )
signal.signal( signal.SIGPROF, handler )
signal.signal( signal.SIGPWR, handler )
signal.signal( signal.SIGQUIT, handler )
signal.signal( signal.SIGRTMAX, handler )
signal.signal( signal.SIGRTMIN, handler )
signal.signal( signal.SIGSEGV, handler )
#signal.signal( signal.SIGSTOP, handler )
signal.signal( signal.SIGSYS, handler )
signal.signal( signal.SIGTERM, handler )
signal.signal( signal.SIGTRAP, handler )
signal.signal( signal.SIGTSTP, handler )
signal.signal( signal.SIGTTIN, handler )
signal.signal( signal.SIGTTOU, handler )
signal.signal( signal.SIGURG, handler )
signal.signal( signal.SIGUSR1, handler )
signal.signal( signal.SIGUSR2, handler )
signal.signal( signal.SIGVTALRM, handler )
signal.signal( signal.SIGWINCH, handler )
signal.signal( signal.SIGXCPU, handler )
signal.signal( signal.SIGXFSZ, handler )
#signal.signal( signal.SIG_DFL, handler )
signal.signal( signal.SIG_IGN, handler )
print time.ctime(), " - Started"
while True:
time.sleep( 1 )
print " Tick:", time.ctime()
ctrl + cis used?atexittoo docs.python.org/2/library/atexit.html