Message between bash and JavaScript via named pipes
I have a JavaScript application that needs to start a Linux application.
Since I did not find any way to start the application and get when it ends, I made a bash script which launches the application, and sends a message via a named pipe when the app closes.
Until here, all's good, but I can't find a way to catch this message in the JavaScript.
Did someone know how to get the message in the JavaScript?
I did search, but I only found how to do this in C# and C++.
Sample from the JavaScript:
var test = spawn('sh', ['home/pi/play.sh', data.video_id]);
Just spawn a bash command which starts the script with the name of the video
Sample from the bash:
mkfifo btjpipe
if pgrep omxplayer
then
echo "AR">btjpipe
else
clear
omxplayer $1 > dev/null
echo "VE">btjpipe
Created the pipe, seeking if the player is already running, then either send AR ("Already Running") or start the player and send VE ("Video End").
Solution 1:
use child_process module and child.stdout to pipe the output where you want
var spawn = require('child_process').spawn;
var test = spawn('sh', ['home/pi/play.sh', data.video_id]);
test.stdin.pipe(process.stdin);
test.stdout.pipe(process.stdout);
test.stderr.pipe(process.stderr);
on this case to the current process
Maybe you can also trying using "exec" instead of spawn, you will get the output in the callback function.