2015-10-20 60 views
1

我正在写一个python程序,它通过无限while循环从队列中读取数据。如何处理由OS /键盘中断(CTRL + C)发送的信号,以断开while循环并关闭活动连接和文件并优雅地退出程序而不是杀死进程。如何在python程序中处理操作系统信号?

while True: 
    read_from_file_and_do_something() 
    ## Handle a signal of shutdown here. 
    ## Send email before exiting. 

该程序将作为守护程序运行。因此需要发送信号。

回答

1

我认为“信号”模块是你在找什么,

def handler(signum, frame): 
    print 'Signal handler called with signal', signum 

signal.signal(signal.SIGABRT, handler) 
+0

我究竟应该用在哪里呢?循环内? –

+0

在##处理信号'signal.signal(signal.SIGABRT,处理程序)'并在处理函数中使用退出码执行aftertask – nagato