[erlang-questions] Start A process of another node

Mazen Harake <>
Tue Oct 27 09:30:05 CET 2009


'' is not the same as ''...

maybe that is your problem.

Quoting the documentation for spawn/4:
"Returns the pid of a new process started by the application of Module:Function to Args on Node. If Node does not exists, a useless pid is returned. Otherwise works like spawn/3."

Hope this helps.

/Mazen
----- Original Message -----
From: "maruthavanan s" <>
To: 
Cc: 
Sent: Tuesday, 27 October, 2009 09:58:05 (GMT+0200) Auto-Detected
Subject: RE: [erlang-questions] Start A process of another node


Thanks for your support, I would like to elaborate what I am doing

I am using "Erlang (BEAM) emulator version 5.6.1 " with fedora core linux 9

I start one node of erlang as 

 erl -sname main
()1>

now I start  
 erl -sname sub
()1>

now I spawn from sub
spawn('',sample,start,[]).

when I do erlang:registered() at 
I can see the sample module registered at main node

when I try quit 
I can still see sample module registered at main node, but when I try to send message 
using

erlang:send({'',sample},{"Message for Test"})

now the the registered module of sample vanishes at main node.

Please help me.

Below is the sample erlang code
-module(sample).
-compile(export_all).

start()->
register(sample,self()),
recv().

recv()->
receive
Msg->
        io:fwrite("Message Received ~p",[Msg])
end,
recv().

Thanks and regards,
Marutha

> CC: 
> From: 
> To: 
> Subject: Re: [erlang-questions] Start A process of another node
> Date: Tue, 27 Oct 2009 00:47:06 -0500
> 
> I'm unsure what to say here.  Erlang doesn't do this to me.
> 
> I started two nodes, one called main and one called sub.  I loaded the  
> process manager on the main node.
> 
> I created a process on main using the following code:
> 
> > spawn(,fun() -> receive {never,Never} -> ok after 30000 - 
> > > ok end end).
> 
> 
> It stayed around even after exiting the original node.
> 
> That says to me that something that you process does depends on the  
> original node.  A few questions about your code:
> 
> 1.  Does it spawn_link(), spawn_opt() with the link option, or link()  
> another process?
> 2.  Does it do I/O?
> 3.  Does it generate log messages?
> 
> The second two (I/O / log messages) use the "group leader", I  
> believe.  In this case, the group leader would be on the original  
> node, which might cause them to exit.  Generally, I believe the group  
> leader of a process should be init.  To set the group leader to init  
> on the new node, try:
> 
> > group_leader( whereis(init), self() )
> 
> 
> Note that this will affect logging, supervision trees, and IO.  If you  
> want to just start/stop a remotely supervised process, I recommend  
> naming its supervisor globally, and adding/removing the childspec from  
> the supervisor.
> 
> On Oct 26, 2009, at 11:19 PM, maruthavanan s wrote:
> 
> >
> > Hi,
> >
> > I need to start and stop a process on another node
> >
> > Say for e.g I have a main node in erlang.
> >
> > I have another sub node in erlang. I need to start some process in  
> > main node from sub node shell.
> >
> > I achieved this by using the below
> >
> > spawn('',sample,start,[]).
> >
> > but when I close the sub node the process is stopped. Is there any  
> > possibility that I can make the process live through out regardless  
> > of whether I close the sub node or not, the sample:start() would be  
> > running in main node?
> >
> > Thanks,
> > Marutha
> > 		 	   		
> 
> 
> 
> -- 
> Jayson Vantuyl
> 
> 
> 
> 
> 
> 
 		 	   		  


More information about the erlang-questions mailing list