nodejs exec保持shell活着?

我试图运行一个打开VLC播放器并将RTMPvideostream入其中的命令。 但是当我运行它,VLC播放器出现,然后closures。 我想这是因为它所依赖的shell正在被杀死。 我怎么能保持壳活着?

从Windows中的cmd行运行相同的命令工作正常。 closuresshellclosuresVLC播放器。

我的代码看起来像这样

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

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

如果是这样,你可能想使用childprocess.spawn来代替。 Exec有局限性,适用于通过stdio输出文本数据的短期运行过程。 如果exec'd进程的输出超过了预先分配的缓冲区,它将会终止(不一定是你的问题,但有可能)。 产卵是为长时间运行的过程而devise的(在某些情况下,它们甚至可以与父母分离)。

如果它仍然立即closures,那么问题很可能不是由于壳被提前终止。 让我们知道

编辑:

为了解决您的意见:

基本上,你会根据空间的出现(除非引用中包含参数,这将被视为单个参数)分解参数。 你也将不得不手动做pipe道,但有一个例子,如何在spawn文件下做到这一点。

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