Thanks, Andrew and Matt, redirecting stdout and stderr does
the trick!
- Alex
On Jan 19, 2007, at 6:26 PM, Alex Sheh wrote:
Hi all, I would like to write an AppleScript
that launches an executable in the background, and then returns
immediately. Currently I have the following,
do shell script “/Path/To/myExecutable”
& (NOTE: myExecutable runs indefinitely waiting for input)
However, even though I specify an ampersand to
launch myExecutable in the background, my AppleScript hangs waiting for
myExecutable to terminate. Is there a way to achieve the described
behavior (my AppleScript returns immediately)?
Specifying an & (inside the quotes) is not sufficient.
While that backgrounds the task, AppleScript still holds onto the process' stdout and stderr to catch the output of the command. To regain control back in your script you need to suppress (or redirect) these:
do shell script "/path/to/myexecutable > /dev/null 2>&1 &"
The > /dev/nul suppresses stdout (sends it to /dev/null, but it could be a file), and 2>&1 sends stderr to the same place as stdout.
Andrew
:)
|