1
これは、多くの人がそれに遭遇したと思われる単純な状況かもしれません。 私は何かをし、無限ループでいつかスリープするシンプルなpythonプログラムを持っています。私はこのプログラムをSIGHUPで正常に終了させるためにシグナルを使いたいと思っています。スリープ中にcallee.pyに信号が送られると、すぐにプログラムは終了しますが、スリープを終了して終了すると思います。sleep pythonループでのシグナル処理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