[erlang-questions] Start A process of another node
Mazen Harake
mazen.harake@REDACTED
Tue Oct 27 09:30:05 CET 2009
'main@REDACTED' is not the same as 'mainnode@REDACTED'...
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" <maruthavanan_s@REDACTED>
To: kagato@REDACTED
Cc: erlang-questions@REDACTED
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
(main@REDACTED)1>
now I start
erl -sname sub
(sub@REDACTED)1>
now I spawn from sub
spawn('mainnode@REDACTED',sample,start,[]).
when I do erlang:registered() at main@REDACTED
I can see the sample module registered at main node
when I try quit sub@REDACTED
I can still see sample module registered at main node, but when I try to send message
using
erlang:send({'main@REDACTED',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: erlang-questions@REDACTED
> From: kagato@REDACTED
> To: maruthavanan_s@REDACTED
> 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(main@REDACTED,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('mainnode@REDACTED',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
> kagato@REDACTED
>
>
>
>
>
More information about the erlang-questions
mailing list