|P is for Practical|
Using IPC::Run to kill stuck processby filmotheklown (Initiate)
|on Dec 13, 2013 at 01:15 UTC||Need Help??|
filmotheklown has asked for the
wisdom of the Perl Monks concerning the following question:
I'm trying to wrap a system call to ffmpeg in such a way that it will kill ffmpeg if it takes too long to run.
my understanding is that I should be able to do something like:
which would then attempt to convert the file to WAV, but if it takes longer than 10 seconds, kill the ffmpeg process. I'm not interested in solutions that simply allow the perl script to time out, it must kill the ffmpeg process too.
I've tried a lot of variations of creating @cmd, but I invariably get some error or another.
Either I get "file not found: /usr/bin/ffmpeg -y -i" or it fails to find the 'input' file that follows the '-i' command for ffmpeg. "i /home/product/ftp-temp/long.mov: No such file or directory" for example.
I've checked the path of my files and the raw command works form the CLI successfully, opening long_input.mov and ripping the audio to long_output.wav.
Clearly there's something I'm not understanding about IPC:run and how it operates.
I'm trying to accomplish the equivalent of "timeout --signal=SIGKILL 10s ffmpeg -y -i long_input.mov long_output.wav" which works in the CLI of centos, but within the perl script
Thank you in advance for your time. Any advice is appreciated.