Mari kita asumsikan kita memiliki daemon sepele yang ditulis dengan python:
def mainloop():
while True:
# 1. do
# 2. some
# 3. important
# 4. job
# 5. sleep
mainloop()
dan kami mengubahnya menggunakan start-stop-daemonyang secara default mengirimkan sinyal SIGTERM( TERM) aktif --stop.
Misalkan langkah saat ini dilakukan adalah #2. Dan saat ini kami sedang mengirim TERMsinyal.
Apa yang terjadi adalah bahwa eksekusi segera berakhir.
Saya telah menemukan bahwa saya dapat menangani acara sinyal menggunakan signal.signal(signal.SIGTERM, handler)tetapi masalahnya adalah masih mengganggu eksekusi saat ini dan melewati kontrol handler.
Jadi, pertanyaan saya adalah - apakah mungkin untuk tidak menghentikan eksekusi saat ini tetapi menangani TERMsinyal di utas yang terpisah (?) Sehingga saya dapat mengatur shutdown_flag = Truesehingga mainloop()memiliki kesempatan untuk berhenti dengan anggun?
signalfddan menutupi pengirimanSIGTERMke proses.