使用NodeJ执行Linux命令面错误

时间:2015-02-02 07:43:25

标签: linux node.js

我使用nodeJS执行linux命令但是当我执行命令而不是" myWaveFile.wav"已经生成的文件比问你可以覆盖吗? [是/否]。但是当使用NodeJS执行命令时,时间不要求任何东西和req。一段时间后失败了。

var sys = require('sys');
var exec = require('child_process').exec;
var _cmd = "avconv -i /root/builds/SpeechRecognition/records/wave_file.wav  -acodec pcm_s16le -ar 16000 /root/builds/SpeechRecognition/records/myWaveFile.wav";


//ExecCMD function call from other files


exports.ExecCMD = function(_cmd, callback){
exec(_cmd, function (error, stdout, stderr){
    //sys.puts(stdout);
    callback(error, stdout, stderr);
});
};

3 个答案:

答案 0 :(得分:1)

根据Node API文档:exec返回ChildProcess

所以你应该能够做到这样的事情:

var cmd = exec(_cmd, function(error, stdout, stderr){
    console.log(stdout);
});

cmd.stdin.write("Y");

您也可以尝试使用spawn而不是exec。 这使您能够监听stdout并在stdin上写什么而不是提前猜测做出更明智的决定

答案 1 :(得分:1)

node-exec用于执行一次性完成的原子命令。对于交互式命令,您需要访问shell。试试这个 - https://github.com/arturadib/shelljs

require('shelljs/global');
var _cmd = "avconv -i /root/builds/SpeechRecognition/records/wave_file.wav  -acodec pcm_s16le -ar 16000 /root/builds/SpeechRecognition/records/myWaveFile.wav";
echo("Y");
echo("\n")

答案 2 :(得分:0)

exec(_cmd, function puts(error, stdout, stderr){
    //sys.puts(stdout);
    callback(error, stdout, stderr);
});

为什么要写函数名????

也许你需要匿名功能???

exec(_cmd, function(error, stdout, stderr){
    //sys.puts(stdout);
    callback(error, stdout, stderr);
});

然后你只调用具有相同参数的回调函数 不需要匿名功能

exec(_cmd, callback);