สมมติว่าเรามีดีมอนตัวเล็ก ๆ เขียนในไพ ธ อน:
def mainloop():
while True:
# 1. do
# 2. some
# 3. important
# 4. job
# 5. sleep
mainloop()
และเรา daemonize โดยใช้start-stop-daemonซึ่งเริ่มต้นโดยส่งSIGTERM( TERM) --stopสัญญาณ
#2สมมติว่าขั้นตอนการดำเนินการในปัจจุบันมี และในขณะนี้เรากำลังส่งTERMสัญญาณ
สิ่งที่เกิดขึ้นคือการกระทำนั้นสิ้นสุดลงทันที
ฉันพบว่าฉันสามารถจัดการเหตุการณ์สัญญาณใช้แต่สิ่งที่เป็นว่ามันยังคงขัดจังหวะการดำเนินการในปัจจุบันและผ่านการควบคุมไปsignal.signal(signal.SIGTERM, handler)handler
ดังนั้นคำถามของฉันคือ - เป็นไปได้หรือไม่ที่จะไม่ขัดจังหวะการทำงานปัจจุบัน แต่จัดการTERMสัญญาณในเธรดที่แยกจากกัน (?) เพื่อให้ฉันสามารถตั้งค่าshutdown_flag = Trueเพื่อให้mainloop()มีโอกาสหยุดอย่างสง่างาม?
signalfdและปิดบังการส่งมอบSIGTERMกระบวนการ