我使用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);
});
};
答案 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);