2014-11-08 43 views
0

我想獲得免費的-m(Linux shell命令),並使用下面的源代碼的結果存儲到一個變量 :(Node.js)如何將stdout.pipe存儲到變量中?

var spawn = require('child_process').spawn, 
    command = spawn('free', ['-m']); 
command.stdout.pipe(process.stdout); 

有什麼辦法來process.stdout存儲在一個變量,請我一些建議

回答

1

這是相當簡單的用child_process.exec

var child = require("child_process"); 
var freeOut; 
child.exec("free", ["-m"], function (error, stdout, stderr) { 
    if (error) { 
    console.error(error, stderr); 
    return; 
    } 
    //stdout and stderr are available here 
    freeOut = stdout; 
    process.stdout.write(stdout); 
}); 
//Note. Do NOT use freeOut here. exec is async. Can only use in the callback 
+0

你的意思是我無法從child.exec正確的標準輸出返回?其實我想要一個功能,可以直接拿到內存使用類似的console.log (GE tload.getmemoryusage());.我是Node.js中的新手 – user3698126 2014-11-08 07:17:06

+0

在節點v0.10中,您不能使用具有返回值的常規函數​​,因爲它不是異步的。由於異步範例節點使用,您必須使用回調或承諾或事件發射器。在節點v0.11中,有一個新的'execSync' API可以用來同步返回。 – 2014-11-08 07:27:36

+0

非常感謝你 – user3698126 2014-11-08 07:31:02