<html><body><div style="font-family: times new roman, new york, times, serif; font-size: 12pt; color: #000000"><div>Yes, when you start erl with -s or -run options then a separate process is started by init to evaluate these calls. This process then terminates after the calls have completed. In your first version this caused the supervisors to terminate as they were (correctly) started with a start_link. In your second version the added receive meant that that call never returned and hence the start process never terminated.<br></div><div><br></div><div>There is a better explanation in <a href="http://www.erlang.org/doc/man/init.html">http://www.erlang.org/doc/man/init.html</a> .<br></div><div><br></div><div>Robert<br></div><div><br></div><hr id="zwchr"><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><b>From: </b>"fxmy wang" <fxmywc@gmail.com><br><b>To: </b>"Michael Scofield" <bayinamine@gmail.com><br><b>Cc: </b>erlang-questions@erlang.org<br><b>Sent: </b>Saturday, 26 October, 2013 4:02:14 PM<br><b>Subject: </b>Re: [erlang-questions] What's the proper/right way to run erlang in the background?<br><div><br></div><p dir="ltr">Could it because that you are using my_supervisor:start_link(), so the start() function and the top supervisor is linked .<br>
Then once the start() function executes and quits, your top supervisor also quits.</p>
<p dir="ltr">Then brings your whole application down .</p>
<p dir="ltr">After you added an infinite receive, you block your start() function from exciting , thus your whole application is ruining fine ?<br>
</p>
<div class="gmail_quote">2013年10月21日 下午9:33于 "Michael Scofield" <<a href="mailto:bayinamine@gmail.com" target="_blank">bayinamine@gmail.com</a>>写道:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  

    
  
  <div>
    Hi all! I'm new to erlang for a few month. <br>
    <br>
    Recently I've developed a small pure erlang program, and it runs
    well in the shell. Now I want to run it in the background, as a
    daemon service process in the os (mine is Ubuntu 12.04 64bit with
    R16B). So I googled "run erlang without shell", and google gave me
    some advice:<br>
    <br>
    1. Using escript. -This is what erlang official faq suggested (
    
    <a href="http://www.erlang.org/faq/how_do_i.html" target="_blank">http://www.erlang.org/faq/how_do_i.html</a>).
    <br>
    2. erl -detached -s Module Function Args<br>
    <br>
    I tried both. As to #1, my escript goes to<br>
    <br>
    #!/usr/bin/env escript<br>
    main(_) -><br>
      my_supervisor:start_link(arg1, arg2).<br>
    <br>
    I ran it using "nohup ./my-escript &", and it didn't run my
    code. =(<br>
    <br>
    So I went to #2. I was acknowledged that "-s" can only pass 0 or 1
    argument, so I wrapped my supervisor using<br>
    <br>
    -module(run).<br>
    -export([start/0]).<br>
    <br>
    start() -><br>
      my_supervisor:start_link(arg1, arg2).<br>
    <br>
    and ran my code as "erl -detached -s run start". But this was also a
    dead end. <br>
    <br>
    I guessed it's because the run:start/0 just returned and finished
    the shell(Is it?), so I added a line to the run:start/0:<br>
    <br>
    -module(run).<br>
    -export([start/0]).<br>
    <br>
    start() -><br>
      my_supervisor:start_link(arg1, arg2),<br>
      <b>receive after infinity -> stop end.</b><br>
    <br>
    And executed "erl -detached -s run start", and everything goes fine!
    my_supervisor started to work without the shell!<br>
    <br>
    Though the problem "solved", I'm very very confused.<br>
    1. Why the "magic line" solved my problem?<br>
    2. What exactly is the proper or right way to run an erlang
    application in the background as the command "nohup ... &" does?<br>
    <br>
    Thanks in advance!<br>
    <br>
    Michael<br>
  </div>

<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div>
<br>_______________________________________________<br>erlang-questions mailing list<br>erlang-questions@erlang.org<br>http://erlang.org/mailman/listinfo/erlang-questions<br></blockquote><div><br></div></div></body></html>