any tricks to make SHELL non blocking?

Warren Samples warren at warrensweb.us
Tue Feb 6 18:53:56 EST 2018


On 02/05/2018 11:04 PM, Stephen Barncard via use-livecode wrote:
> I have this open sourced app
> 
> ffmpeg
> 
> and I need to copy the first file from a CD, convert it to a wav file, name
> it, and save it to a file on a hard drive.
> (the executable is located in the same folder as the stack, hence the ./ )
> so my generated command used with the shell command is:
> 
> *./ffmpeg -i '/Volumes/Audio CD/1 Audio Track.aiff' '/Volumes/20160518 KJAZ
> ARCHIVE MASTER/JULY - JAN 2017/20040315-2-JD0211b.wav'
> 
> thanks for any suggestions...

The dictionary says: "On OS X systems, you can use the open process 
command to start up an application, but not a Unix process. To work with 
a Unix process, use the shell func instead." That makes me wonder if you 
can only use shell() with ffmpeg.

Did you try the suggestions from the other thread? Did they not do what 
you needed?

get shell ("nohup mycommand --some-params 'can use single quotes to 
escape if necessary' &")

here the command is prefaced with 'nohup' and a space and is closed
with a space and &


There are several variations for redirecting to /dev/null which also 
work to make the shell() non-blocking. Here's an example:

get shell ("mycommand --some-params 'can use single quotes to escape if 
necessary' </dev/null &>/dev/null &")


Using your example given here, they might look like this (linebreaks may 
not be correct due to email fun):

get shell("nohup ./ffmpeg -i '/Volumes/Audio CD/1 Audio Track.aiff' 
'/Volumes/20160518 KJAZ ARCHIVE MASTER/JULY - JAN 
2017/20040315-2-JD0211b.wav' &")

OR

get shell("./ffmpeg -i '/Volumes/Audio CD/1 Audio Track.aiff' 
'/Volumes/20160518 KJAZ ARCHIVE MASTER/JULY - JAN 
2017/20040315-2-JD0211b.wav' </dev/null &>/dev/null &")

The method using 'nohup' *might* cause a problem due to not finding 
ffmpeg at its path relative to your LiveCode app. If it fails, that 
would be the first thing to troubleshoot.

Good luck!

Warren




More information about the Use-livecode mailing list