[erlang-questions] Questions on C/Java nodes

Paul Guyot <>
Wed Oct 1 08:43:47 CEST 2008


Hello,

The tutorial for the C nodes (I'm pretty sure I've seen some similar  
code for Java nodes) goes like this:

listen(..., 5)
erl_publish(...)
fd = erl_accept(...)
while (true) {
	erl_receive_msg(fd, ...)
}

 From what I understand, the C node can only have one peer (the first  
one that connects). Yet, still in the tutorial sample code [1], listen 
(2) is called with a backlog of 5. Is there any reason why the  
tutorial code isn't a regular fork(2) or select(2)-based server code,  
except for simplicity (and that this probably wouldn't be portable on  
Windows)? On Unix, can select(2) be used on the file descriptor  
returned by erl_accept?

Still on the C nodes, I am confused by the creation parameter of  
erl_connect_init. The man page erl_connect(3) says:

> creation helps identify a particular instance of a C node. In
> particular, it can help prevent us from receiving messages sent
> to an earlier process with the same registered name.
>
> A C node acting as a server will be assigned a creation number
> when it calls erl_publish().


and then the sample code below gives 0. In which case should we  
provide something different from 0?

Paul

[1] http://erlang.org/doc/tutorial/cnode.html




More information about the erlang-questions mailing list