通过命名管道在bash和javascript之间传递消息

时间:2013-07-24 07:41:55

标签: javascript node.js bash named-pipes raspbian

我有一个需要启动linux应用程序的javascript应用程序。 由于我没有找到任何方法来启动应用程序并在结束时获取,我创建了一个启动应用程序的bash脚本,并在应用程序关闭时通过命名管道发送消息。

直到这里,一切都很好,但我找不到在javascript中捕获此消息的方法。

有人知道如何在javascript中获取消息吗?

我做了搜索,但我只是在C#和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(“视频结束”)。

1 个答案:

答案 0 :(得分:2)

使用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,您将在回调函数中获得输出。