Регистрация дочернего процесса в процессе, который инициировал вызов start_child

У меня есть логический модуль, который сообщает супервизору запускать дочерние процессы. Мне нужно сохранить этот детский pid в состоянии логических модулей. Но мне также нужно обновить дочерний pid, если супервизор перезапустит его.

Итак, я не могу использовать pid, возвращаемое из вызова start_child, так как это даст мне pid только при первом запуске, а не при перезапусках. Прямо сейчас я заставляю дочерний процесс вызывать функцию регистрации (обновляет состояние с новым pid) в логическом модуле из дочерней функции init. Таким образом, логический модуль может обновлять pid в своем состоянии всякий раз, когда процесс перезапускается. Логический модуль - это gen_server, и я выполняю приведение, когда регистрирую дочерний процесс.

Может ли кто-нибудь увидеть в этом проблему и есть ли другой более "правильный" способ сделать это?

5
задан JoGr 3 December 2010 в 17:13
поделиться