如何优雅地退出python程序
一个单模的python程序,启动之后要能够优雅地关闭。即当用户按Ctrl+C或者kill pid的时候,程序都能从容关闭。实现起来非常简单。
is_running = True
def onSigChld(signo, frame):
global is_running
pid, status = os.waitpid(-1, os.WNOHANG)
if pid:
is_running = False
pass
def onSigInt(signo, frame):
global is_running
is_running = False
pass
def onSigTerm(signo, frame):
global is_running
is_running = False
pass
def test():
global is_running
while is_running:
time.sleep(1)
print "."
print "App exit gracefully."
sys.exit(0)
pass
if __name__ == "__main__":
# 子进程退出后向父进程发送的信号
signal.signal(signal.SIGCHLD, onSigChld)
# 主进程退出信号
signal.signal(signal.SIGINT, onSigInt)
signal.signal(signal.SIGTERM, onSigTerm)
test()