Найти - Пользователи
Полная версия: Реализации демона
Начало » Python для экспертов » Реализации демона
1 2 3 4
Ferroman
Зачем плодить одинаковые посты?
well
Всем привет. Можно такой вопрос: если демон пораждает дочернего демона, то как корректно, по завершению задачи, выйти из дочернего демона?
Андрей Светлов
По завершению дочернего - просто выйти. По sys.exit, например.
По завершению главного - послать сигнал дочерним и подождать из завершения. Через os.wait, например
well
Андрей Светлов
По завершению дочернего - просто выйти. По sys.exit, например.
По завершению главного - послать сигнал дочерним и подождать из завершения. Через os.wait, например
Если выхожу через sys.exit, то зомби-процес висит :(
Андрей Светлов
Если ждать через os.wait (или как там ты его запускаешь - для subprocess немногое меняется) - зомби благополучно помирает
well
Если процесс работает уже как демон и в нем я пытаюсь создать еще один демон следующим образом:
def clientDaemonize (client):
if (os.fork () == 0):
client.send (“test string”)
time.sleep (20)
s = client.recv (1024)
print s
client.close
os._exit (0)
else:
os.wait ()

sockVar = socket (AF_INET, SOCK_STREAM)
sockVar.bind ((“”, tcpPort))
sockVar.listen (tcpConCount)
while 1:
client, addr = sockVar.accept ()
clientDaemonize (client)

Тогда рождается только 1 дочерний демон от первого подключившегося клиента, а все остальные клиенты просто ждут :(
shiza
Все дело в os.wait () - родительский процесс начинает ждать, когда оставновится дочерний.

И возврат в цикл, в котором создаются подключения - не выполняется.
well
shiza
Все дело в os.wait () - родительский процесс начинает ждать, когда оставновится дочерний.

И возврат в цикл, в котором создаются подключения - не выполняется.
А как тогда организовать “нормальное рождение” дочерних демонов и завершение их? Буду очень благодарен за пример.
shiza
Всю ветку не осилил прочитать, поэтому отвечаю по сообшениям #26, #28

Клади PID детей в массив, и при завершении работы в цикле делай waitpid для всех детей из этого массива.

Само собой - с детьми надо как-то договорится, что пора завершаться. Если они конечно по сценарию сами не дохнут %)
Ferroman

Ужас какой ;)

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB