まず:Windowsで
、あなたが使用している場合:
ping google.com
はあなたが唯一の4情報のpingを取得しますが、Ubuntuの上で、あなたがそのコマンドを使用する場合は、pingを実行できます」 Ctrl+C
で停止するまで停止しないでください。
これを修正するには、-cフラグを使用する必要があります。 -cオプションは、指定された数のECHO_RESPONSEパケットを送信(または受信)した後に停止するようpingプログラムに指示します。
第二:
あなたはping応答を返送するres.send
を使用する必要がなく、原因あなたのcallback
機能すなわちにあなたがres
とreq
のアクセスを持っていないます。
あなたのコールバック
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
あなたは説明できますか? –
もっと説明できますか?あなたは何をしたいのですか? – abdulbarik
"puts"と見ることができる関数。 "result"という値を返したい。 "exec(ping localhost、puts)"という関数を呼び出すときはいつでも – vinay