1
這可能是一個簡單的情況,我預計很多人會遇到它。 我有一個簡單的python程序,可以在某個無限循環中執行某些操作並進入睡眠狀態。我想用信號使這個程序在SIGHUP上正常退出。現在,當一個信號在睡眠狀態下發送到callee.py時,程序立即退出,而我期望它完成睡眠並退出。睡眠蟒蛇迴路中的信號處理2.7
有沒有任何解決方法來繞過此行爲?我也接受任何其他方法,通過我可以實現這一點。
注意:這與python3預期的一樣,但我無法移植現有的python 2.7到3的模塊。
這是我的代碼:
callee.py
stop_val = False
def should_stop(signal, frame):
print('received signal to exit')
global stop_val
stop_val = True
def main():
while not stop_val:
signal.signal(signal.SIGTERM, should_stop)
# do something here
print('Before sleep')
time.sleep(300)
print('after sleep')
caller.py
pid = xxx;
os.system('kill -15 %s' % pid)
正如一個側面說明,'os.system'已被棄用。傾向於使用'subprocess.Popen'。 – DeepSpace
已注意。謝謝 – madhuri