2017-03-29 7 views
-1
function puts(error, stdout, stderr) { 
    if (error) { 
     console.log("error", "Error connecting"); 
     result = "Failed"; 
     console.log(result) 
    } 
    else { 
     sys.puts(stdout) 
     result = "Success" 
     console.log(result) 
    } 
    } 

//The calling function is mentioned as below: 
app.get('/api/platforms1', function(req, res){ 
    exec("ping localhost",puts); 
}); 

//私は平均スタックの下で作業しています.IPアドレスをpingして結果を表示するメソッドを作成しました。返す関数。どうすればいいの?通常の関数をnode.jsに戻す方法

+0

あなたは説明できますか? –

+0

もっと説明できますか?あなたは何をしたいのですか? – abdulbarik

+0

"puts"と見ることができる関数。 "result"という値を返したい。 "exec(ping localhost、puts)"という関数を呼び出すときはいつでも – vinay

答えて

0

まず:Windowsで

、あなたが使用している場合:

ping google.com

はあなたが唯一の4情報のpingを取得しますが、Ubuntuの上で、あなたがそのコマンドを使用する場合は、pingを実行できます」 Ctrl+Cで停止するまで停止しないでください。

これを修正するには、-cフラグを使用する必要があります。 -cオプションは、指定された数のECHO_RESPONSEパケットを送信(または受信)した後に停止するようpingプログラムに指示します。

第二:

あなたはping応答を返送するres.sendを使用する必要がなく、原因あなたのcallback機能すなわちにあなたがresreqのアクセスを持っていないます。

あなたのコールバック

function execute(command, callback, res) { 
    exec(command, function(error, stdout, stderr) { 
     // Notice extra params I have passed here^,^
     callback(error, stdout, stderr, res); 
    }); 
} 

を使用してアクセスする別の引数を渡すために、このラッパーfuncを使用して、あなたは

execute("ping -c 2 google.com", puts, /*pass extra params*/ res); 

としてこれを使用して、あなたのcallback関数の後、ここで余分のparamsをキャッチすることができます

        || 
         ---------- \/ 

function execute(command, callback, res) { 
    ... 
} 

Compl ETEコード:

var exec = require('child_process').exec; 

function puts(error, stdout, stderr, res) { 
     // Notice extra params here^
    if (error) { 
     console.log("error", "Error connecting"); 
     result = "Failed"; 
     console.log(result) 
    } else { 
     sys.puts(stdout) 
     result = "Success" 
     console.log(result) 
     //send response to client 
     res.send(result) 
    } 
} 

//The calling function is mentioned as below: 
app.get('/api/platforms1', function(req, res) { 
    execute("ping -c 1 google.com", puts, /*pass extra params*/ res); 
}); 

function execute(command, callback, res) { 
    exec(command, function(error, stdout, stderr) { 
     // Notice extra params I have passed here^,^
     callback(error, stdout, stderr, res); 
    }); 
} 

参考: "リターン機能として結果を表示する" 私はあなたが何を意味するかわからないんだけど

https://askubuntu.com/questions/200989/ping-for-4-times

Get the output of a shell command in node.js

0

最初にsysdeprecatedです。代わりにutilを使用できます。

Node.js自然は非同期なので、callbackでできることはどこにでも結果を得たい場合は、

関連する問題