首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs exec让shell保持存活吗?

nodejs exec让shell保持存活吗?
EN

Stack Overflow用户
提问于 2013-06-02 13:44:33
回答 1查看 2.1K关注 0票数 1

我正在尝试运行一个命令,打开VLC播放器并将RTMP视频流式传输到其中。但当我运行它时,VLC播放器出现,然后关闭。我认为这是因为它所依赖的外壳正在被杀死。我怎样才能让shell保持存活呢?

在windows中,从cmd行运行相同的命令可以正常工作。关闭外壳也会关闭VLC播放器。

我的代码如下所示

代码语言:javascript
复制
var exec = require('child_process').exec
exec('"Z:/downloads/rtmpdump-2.4-git-010913-windows/rtmpdump.exe" -r "rtmp://199.9.251.83/app/jtv__cQlY3imWtyDf4Cr" -j "ae9d2c8bbe586ac9f88a4fae9ec5841c3976092c:{\"swfDomains\": [\"justin.tv\", \"jtvx.com\", \"xarth.com\", \"twitchtv.com\", \"twitch.tv\", \"newjtv.com\", \"jtvnw.net\", \"wdtinc.com\", \"imapweather.com\", \"facebook.com\", \"starcrafting.com\"], \"streamName\": \"jtv__cQlY3imWtyDf4Cr\", \"expiration\": 1370153205.846189, \"geo_ip\": \"91.10.111.130\", \"server\": \"video3-1\"}" --swfVfy "http://www-cdn.jtvnw.net/widgets/live_embed_player.r4b02d38f442d7cae5646f1a1c17078362f5fd857.swf?channel=games&referer=&channel=games" -v -o - | "C:/Program Files (x86)/VideoLAN/VLC/vlc.exe" - --play-and-exit')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-02 14:47:41

您指定了Node.js,但没有提供node.js代码的示例。我们应该假设exec(command);代表require('child_process').exec(command);吗?

如果是这样,您可能希望改用childprocess.spawn。Exec具有局限性,适用于通过stdio输出文本数据的短时间运行的进程。如果exec'd进程的输出超过预先分配的缓冲区,它将终止(不一定是您的问题,但有可能)。派生是为长期运行的进程设计的(在某些情况下,它们甚至可以从父进程中分离出来)。

如果它仍然立即关闭,那么问题很可能不是由于shell过早终止造成的。让我们知道。

编辑:

要解决您的意见,请执行以下操作:

基本上,您可以根据空格出现的位置来拆分参数(除非参数用引号括起来,这将被视为单个参数)。您还必须手动执行管道操作,但在spawn文档中有一个如何执行此操作的示例。

另一种方法是简单地生成一个shell脚本文件,然后使用node执行该脚本。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16880118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档