<div dir="ltr">Hi Avinash,<div><br></div><div>See <a href="http://www.erlang.org/doc/getting_started/robustness.html#id69577">http://www.erlang.org/doc/getting_started/robustness.html#id69577</a></div><div><br></div><div><quote></div><div><p style="font-family:Verdana,Arial,Helvetica,sans-serif;color:rgb(0,0,0)">The default behaviour of a process that receives a normal exit is to ignore the signal.</p></div><div></quote></div><div class="gmail_extra"><br></div><div class="gmail_extra">If you change the local_loop function as shown below, you will get the behaviour you are expecting.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div>local_loop() -></div><div>  receive</div><div>    stop -></div><div>      io:format("stopped~n"),</div><div>      exit(stopped);</div><div>    X -></div><div>      io:format("~p~n", [X]),</div><div>      local_loop()</div><div>  end.</div><div><br></div><div>cheers,</div><div>Chandru</div><div><br></div><div class="gmail_quote">On 21 November 2015 at 11:49, Avinash Dhumane <span dir="ltr"><<a href="mailto:nistrigunya@gmail.com" target="_blank">nistrigunya@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>I have following test program (on Windows):</div><div><br></div><div><div>D:\Balin\Algo_v6\v0.5>type my_test.erl</div><div>-module(my_test).</div><div>-export([start/0]).</div><div><br></div><div>start() -></div><div>  register(?MODULE,</div><div>    spawn(fun() -></div><div>      init(),</div><div>      local_loop()</div><div>    end)).</div><div><br></div><div>init() -></div><div>  spawn_link('<a href="mailto:feed@tws.nse.in" target="_blank">feed@tws.nse.in</a>',</div><div>    fun() -></div><div>      register(?MODULE, self()),</div><div>      remote_loop()</div><div>    end),</div><div><br></div><div>  spawn('<a href="mailto:feed@tws.nse.in" target="_blank">feed@tws.nse.in</a>',</div><div>    fun() -></div><div>      timer:sleep(timer:seconds(5)), % wait till the above process is registered<br></div><div>      ?MODULE ! hello,</div><div>      ?MODULE ! world,</div><div>      ?MODULE ! stop</div><div>    end).</div><div><br></div><div>remote_loop() -></div><div>  receive</div><div>    X -></div><div>     {?MODULE, '<a href="mailto:algo@tws.nse.in" target="_blank">algo@tws.nse.in</a>'} ! X,</div><div>     remote_loop()</div><div>  end.</div><div><br></div><div>local_loop() -></div><div>  receive</div><div>    stop -></div><div>      io:format("stopped~n");</div><div>    X -></div><div>      io:format("~p~n", [X]),</div><div>      local_loop()</div><div>  end.</div><div><br></div><div>D:\Balin\Algo_v6\v0.5></div></div><div><br></div><div>Then, I start 2 nodes, as follows:</div><div><br></div><div><div>D:\Balin\Algo_v6\v0.5>start erl -name <a href="mailto:algo@tws.nse.in" target="_blank">algo@tws.nse.in</a></div><div><br></div><div>D:\Balin\Algo_v6\v0.5>start erl -name <a href="mailto:feed@tws.nse.in" target="_blank">feed@tws.nse.in</a></div></div><div><br></div><div>On the '<a href="mailto:algo@tws.nse.in" target="_blank">algo@tws.nse.in</a>' node, I run the program as follows:</div><div><br></div><div><div>Eshell V7.0  (abort with ^G)</div><div>(<a href="mailto:algo@tws.nse.in" target="_blank">algo@tws.nse.in</a>)1> rpc:call('<a href="mailto:feed@tws.nse.in" target="_blank">feed@tws.nse.in</a>', erlang, whereis, [my_test]).</div><div>undefined</div><div>(<a href="mailto:algo@tws.nse.in" target="_blank">algo@tws.nse.in</a>)2> my_test:start().</div><div>true</div><div>(<a href="mailto:algo@tws.nse.in" target="_blank">algo@tws.nse.in</a>)3> hello</div><div>(<a href="mailto:algo@tws.nse.in" target="_blank">algo@tws.nse.in</a>)3> world</div><div>(<a href="mailto:algo@tws.nse.in" target="_blank">algo@tws.nse.in</a>)3> stopped</div><div>(<a href="mailto:algo@tws.nse.in" target="_blank">algo@tws.nse.in</a>)3> rpc:call('<a href="mailto:feed@tws.nse.in" target="_blank">feed@tws.nse.in</a>', erlang, whereis, [my_test]).</div><div><6755.43.0></div><div>(<a href="mailto:algo@tws.nse.in" target="_blank">algo@tws.nse.in</a>)4></div><div><br></div></div><div>The messaging works as I expected. However, the process registered as 'my_test' on the node '<a href="mailto:feed@tws.nse.in" target="_blank">feed@tws.nse.in</a>' does not terminate. I expected it to terminate since I started it using spawn_link/2 from the calling process on '<a href="mailto:algo@tws.nse.in" target="_blank">algo@tws.nse.in</a>' which terminates after receiving the 'stop' message.</div><div><br></div><div>It keeps running, as is observed on the node '<a href="mailto:feed@tws.nse.in" target="_blank">feed@tws.nse.in</a>':</div><div><br></div><div><div>Eshell V7.0  (abort with ^G)</div><div>(<a href="mailto:feed@tws.nse.in" target="_blank">feed@tws.nse.in</a>)1> whereis(my_test).</div><div><0.43.0></div><div>(<a href="mailto:feed@tws.nse.in" target="_blank">feed@tws.nse.in</a>)2></div></div><div><br></div><div>What is wrong with the setup done in the test program above that the linked process on another node does not terminate?</div><div><br></div><div>Please advise.</div><div><br></div><div>Thank you.</div><span class=""><font color="#888888"><div><br></div><div>Avinash</div></font></span></div>
<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div></div>