Сообщение между bash и javascript через именованные каналы

58
4

У меня есть приложение javascript, которому нужно запустить приложение linux. Поскольку я не нашел способ запустить приложение и получить, когда он закончится, я сделал сценарий bash, который запускал приложение, и отправлял сообщение через именованный канал, когда приложение закрывается.

Пока здесь, все хорошо, но я не могу найти способ поймать это сообщение в javascript.

Кто-нибудь знал, как получить сообщение в javascript?

Я выполнил поиск, но я только нашел, как это сделать на С# и C++.

Образец из javascript:

var test = spawn('sh', ['home/pi/play.sh', data.video_id]);

Просто создайте команду bash, которая запускает скрипт с именем видео

Образец из bash:

mkfifo btjpipe
if pgrep omxplayer
then
echo "AR">btjpipe
else
clear
omxplayer $1 > dev/null
echo "VE">btjpipe

Создал трубу, ища, если игрок уже запущен, либо отправляет AR ("Уже работает"), либо запускает плеер и отправляет VE ("Video End").

спросил(а) 2013-07-24T10:41:00+04:00 7 лет, 3 месяца назад
1
Решение
71

используйте модуль child_process и child.stdout для вывода вывода туда, где вы хотите

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);

в этом случае к текущему процессу

Возможно, вы также можете попробовать использовать "exec" вместо spawn, вы получите результат в функции обратного вызова.

ответил(а) 2013-07-24T11:35:00+04:00 7 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема