Don't have access right now to check, but guessing that xdg-open waits for
the child process to exit.
Try detaching/backgrounding? Not sure how you'd do that with the "sh"
function though.

Naively, wrap in (future ...)?

-- 
jaju

On Sat, Nov 10, 2012 at 6:56 AM, Andy Fingerhut <andy.finger...@gmail.com>wrote:

> This issue may be specific to Linux, or even to a particular version of
> Linux that I am using (Ubuntu 11.10 32-bit desktop), although I doubt it
> is.  If others try this out, I'd be curious to know what your results are,
> especially if you know why it is happening, and how it can be fixed.
>
> First, some behavior from a bash window on Ubuntu 11.10:
>
> % echo hi
> hi
> % xdg-open http://www.google.com
> %
>
> After pressing return for the xdg-open command above, my browser opens a
> tab to Google's home page.  Back in the shell window, the next prompt
> appears immediately, even though the browser is still running and open to
> that page.  That is what I expect to happen.
>
> However, if I do the following commands inside of a Clojure REPL (tested
> Clojure 1.4 and 1.5-beta1 so far):
>
> % rlwrap java -cp ~/lein/clojure-1.4.0/lib/clojure-1.4.0.jar clojure.main
> Clojure 1.4.0
> user=> (require '[clojure.java.shell :as sh])
> nil
> user=> (sh/sh "echo" "hi")
> {:exit 0, :out "hi\n", :err ""}
> user=> (sh/sh "xdg-open" "http://www.google.com";)
>
> The invocation of echo returns immediately, printing the result and the
> next REPL prompt.  But when I invoke xdg-open, while the browser window
> appears and goes to the Google home page, back in the bash window I see no
> return value and no new REPL prompt.
>
> If I quit the browser, then back in the bash window I finally see the
> return value and a REPL prompt, as shown below:
>
> {:exit 0, :out "", :err ""}
> user=>
>
>
> What I'm wishing would happen is for the return value and REPL prompt to
> appear very soon after pressing return when invoking xdg-open with
> clojure.java.shell/sh.
>
> I added some debug print messages to a local copy of
> clojure.java.shell/sh, and it is stopping when waiting for the evaluation
> of either @out or @err in the final line of the function.
>
> If I do the same commands above on Mac OS X, with "open" instead of
> "xdg-open", it all works as I expect.
>
> Any clues?
>
> Thanks,
> Andy
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to