[erlang-questions] 2 (unrelated) questions.

Geoff Cant nem@REDACTED
Wed Oct 26 22:34:06 CEST 2011

On 2011-10-26, at 08:25 , Paul Barry wrote:
> Q2. Being able to register a spawned process is cool, but why can't I
> register a process that is spawned remotely?  That is, why does this
> line of code give me a "badarg"?
>     register(the_board, spawn('server@REDACTED', displayboard,
> putmessage, [])).

You can only register local pids and ports. I'm not sure why this restriction is enforced - maybe the erts people have more information.

In practice it's easy to work around. Register the name on the remote node and then use the {the_board, 'server@REDACTED'} ({RegisteredName, Node}) form instead of using a bare registered name or pid. This form is a valid argument to the ! send function.

As others have mentioned there are other process registries you can use (gproc, ngproc, proc_reg, global) that allow the registration of remote pids (and usually allow names to be terms instead of just atoms).

Geoff Cant

More information about the erlang-questions mailing list