Локальный реестр лидера группы - PullRequest
0 голосов
/ 23 декабря 2010

Я пытаюсь зарегистрировать group_leader () локально, используя

register( iogl, group_leader()).

, но возвращается с ошибкой bad_arg

** exception error: bad argument
 in function  register/2
    called as register(iogl,<0.29.0>)

Как я могу дать локальное символическое имя group_leader() процесс?

Я могу зарегистрировать его как глобальное имя, используя

global:register_name(iogl, group_leader()).

, но это не то, что мне нужно.

UPD: Реальная проблема:

Я создаю процесс на удаленном узле ( RN ), используя порождение с локального узла ( LN ), но я хочу, чтобы этот процессиспользуйте group_leader RN , а не LN для операций ввода-вывода.Спасибо.

Ответы [ 3 ]

2 голосов
/ 26 декабря 2010

Самый простой способ сделать это для кода, который вы создали на удаленном узле:

io:format(user, FormatString, FormatArguments)

Это заставит удаленный код использовать лидера группы удаленного ввода-вывода для вывода. Вы также можете иметь код, который вы вызываете удаленно, чтобы установить для его group_leader значение pid user вскоре после его появления, тогда он может использовать io:format/2 нормально и отправит свои выходные данные в правильное место на удаленном узле.

Полагаю, короткий ответ заключается в том, что зарегистрированное (символическое) имя для стандартного процесса лидера группы на любом узле: user.

2 голосов
/ 23 декабря 2010

Конечно, вы можете зарегистрировать его, group_leader - это pid, как и любой pid. Есть две причины, по которым вы получаете ошибку:

  • Это имя уже зарегистрировано.
  • Процесс уже мертв, нет проверки, что процесс group_leader активен.

И я повторяю вопрос @ OJ о том, почему вы хотели бы дать ему имя.

1 голос
/ 24 декабря 2010

Для вызова на удаленный узел может помочь.На каждом узле вам нужен некоторый процесс порождения, как это делает стандартный модуль rpc.

Библиотека rexi от Couudant реализует такие функции.https://github.com/cloudant/rexi См. Rexi: cast / 3:

rexi:cast(remote_node, self(), {io, format, ["~p~n", ["where to go the output?"]]}).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...