繁体   English   中英

使用NodeJ执行Linux命令面临错误

[英]Using NodeJs execute Linux commands Face error

我使用nodeJS来执行linux命令,但是当我执行命令时,如果已经生成了“ myWaveFile.wav”文件,那么请问是否可以覆盖它? [是/否]。 但是,当使用NodeJS execute命令时,此时无需询问任何内容并要求。 一段时间后失败。

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);
});
};

根据Node API文档: exec返回一个ChildProcess

因此,您应该能够执行以下操作:

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

cmd.stdin.write("Y");

您也可以尝试使用spawn而不是exec。 这使您能够聆听stdout并就在stdin上写的内容做出更明智的决定,而无需提前猜测

node-exec用于执行一次完成的原子命令。 对于交互式命令,您需要访问外壳程序。 试试这个-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")
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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM