Both ways worked, but the problem is that it&#39;s still blocking my script to display things on the command-line. When I Ctrl+C to terminate the execution I get the usual &quot;user break&quot; message and all the things I tried to display on the command-line.<div class="gmail_extra">
<br><br><div class="gmail_quote">On Mon, Nov 12, 2012 at 12:00 PM, Greg Hendershott <span dir="ltr">&lt;<a href="mailto:greghendershott@gmail.com" target="_blank">greghendershott@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">&gt; When I try to use do-not-return I get this error: bonsai.rkt:22:3:<br>
&gt; do-not-return: unbound identifier in module<br>
<br>
</div>To use it, you would need to require the module that provides it:<br>
<br>
  (require web-server/web-server)<br>
<br>
(Which I found by searching the docs for `do-not-return&#39;, and getting this:<br>
<a href="http://docs.racket-lang.org/web-server-internal/web-server.html#(def._((lib._web-server/web-server..rkt)._do-not-return))" target="_blank">http://docs.racket-lang.org/web-server-internal/web-server.html#(def._((lib._web-server/web-server..rkt)._do-not-return))</a><br>

<div class="im">)<br>
<br>
&gt; Then I tried read-line, which worked, but it blocks the console output so<br>
&gt; I&#39;ll only see the things that my script is sending to the console after I<br>
&gt; hit Enter and finish the program. Is there a asynchronous way of doing this?<br>
<br>
</div>It sounds like you should use `do-not-return&#39; as Jay recommended.<br>
<br>
If you don&#39;t want to require all of web-server to get it, the<br>
definition is simply this:<br>
<br>
  (define (do-not-return)<br>
    (semaphore-wait (make-semaphore 0)))<br>
<div class="im HOEnZb"><br>
<br>
On Mon, Nov 12, 2012 at 8:42 AM, Nathan Campos &lt;<a href="mailto:nathanpc@dreamintech.net">nathanpc@dreamintech.net</a>&gt; wrote:<br>
</div><div class="HOEnZb"><div class="h5">&gt; When I try to use do-not-return I get this error: bonsai.rkt:22:3:<br>
&gt; do-not-return: unbound identifier in module<br>
&gt;<br>
&gt; Then I tried read-line, which worked, but it blocks the console output so<br>
&gt; I&#39;ll only see the things that my script is sending to the console after I<br>
&gt; hit Enter and finish the program. Is there a asynchronous way of doing this?<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Nov 12, 2012 at 1:55 AM, Greg Hendershott<br>
&gt; &lt;<a href="mailto:greghendershott@gmail.com">greghendershott@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; If I understand correctly you simply need your main Racket thread to<br>
&gt;&gt; wait, for example, after your main thread calls your `start-server&#39;:<br>
&gt;&gt;<br>
&gt;&gt;   (start-server)<br>
&gt;&gt;   (displayln &quot;Server started. Press ENTER to quit.&quot;)<br>
&gt;&gt;   (read-line)<br>
&gt;&gt;   ;; End of your main RKT file<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Sun, Nov 11, 2012 at 8:39 PM, Nathan Campos &lt;<a href="mailto:nathanpc@dreamintech.net">nathanpc@dreamintech.net</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; I&#39;m having some fun with tcp-listen with Racket, here&#39;s the simple start<br>
&gt;&gt; &gt; server function that I&#39;m using:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; #lang racket<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; (define start-server<br>
&gt;&gt; &gt; (lambda ([port 8080])<br>
&gt;&gt; &gt;   (current-custodian server-custodian)<br>
&gt;&gt; &gt; ; Caps at 50 connections at the same time<br>
&gt;&gt; &gt; (define listener (tcp-listen port 50 #t))<br>
&gt;&gt; &gt; (define (loop)<br>
&gt;&gt; &gt;   (accept-and-handle listener)<br>
&gt;&gt; &gt;   (loop))<br>
&gt;&gt; &gt; (define t (thread loop))<br>
&gt;&gt; &gt; (lambda ()<br>
&gt;&gt; &gt;   (kill-thread t)<br>
&gt;&gt; &gt;   (tcp-close listener))<br>
&gt;&gt; &gt;   (fprintf (current-output-port) &quot;Server started listening at ~a&quot;<br>
&gt;&gt; &gt; port)))<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; It was running great on DrRacket, but when I tried to run it under<br>
&gt;&gt; &gt; racket<br>
&gt;&gt; &gt; (the command-line executable) it shows the sever started message and<br>
&gt;&gt; &gt; quits,<br>
&gt;&gt; &gt; so the server doesn&#39;t keep running. Is there anyway to make racket wait<br>
&gt;&gt; &gt; until it&#39;s process gets killed or the user types something?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Best Regards,<br>
&gt;&gt; &gt; Nathan Campos<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; ____________________<br>
&gt;&gt; &gt;   Racket Users list:<br>
&gt;&gt; &gt;   <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; ____________________<br>
&gt;   Racket Users list:<br>
&gt;   <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
&gt;<br>
</div></div></blockquote></div><br></div>