Ответов (4)4
Вы можете использовать регистр BIF, чтобы дать порождающему / родительскому процессу имя (атом), а затем вернуться к зарегистрированному имени из других процессов.
FUNC () ->
%% Сделайте что-нибудь
%% Затем отправьте сообщение
родителю! СООБЩЕНИЕ....
регистр (родитель, сам ()),
порождение (МОДУЛЬ, ФУНКЦИЯ, [ARGS]).
См. Раздел Начало работы с Erlang §3.3 и Справочное руководство по Erlang §10.3 .
Лучше всего передать его в качестве аргумента функции, вызываемой для запуска дочернего процесса. Если вы создаете веселья, что обычно является хорошим делом, будьте осторожны:
spawn_link(fun () -> child(self()) end)
что НЕ будет работать так, как вы планировали. (Подсказка: когда вызывается self ())
Как правило, вам следует избегать регистрации процесса, т. Е. Присвоения ему глобального имени, если вы действительно не хотите, чтобы он был известен во всем мире. Создание веселья означает, что вам не нужно экспортировать созданную функцию, так как обычно следует избегать экспорта функций, которые не предназначены для вызова из других модулей.