簡體   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