Diyelim ki python ile yazılmış böyle önemsiz bir cini var:
def mainloop():
while True:
# 1. do
# 2. some
# 3. important
# 4. job
# 5. sleep
mainloop()
ve bunu start-stop-daemon
varsayılan olarak send SIGTERM
( TERM
) sinyalini kullanarak daemonize ediyoruz --stop
.
Farzedelim ki şu anki adımdır #2
. Ve şu anda TERM
sinyal gönderiyoruz .
Olan şey, infazın derhal sona ermesidir.
Sinyal olayını kullanarak işleyebileceğimi fark ettim signal.signal(signal.SIGTERM, handler)
ama şey şu an mevcut yürütmeyi kesintiye uğratması ve kontrolü geçmesi handler
.
Yani, sorum şu - geçerli yürütmeyi kesmek değil, ancak TERM
ayrı bir iş parçacığında (?) Sinyal işlemek mümkün shutdown_flag = True
ki böylece mainloop()
zarif bir şekilde durdurmak için bir şans vardı ayarlamak mümkün mü?
signalfd
teslimini maskeleyerekSIGTERM
.