2014-11-08 45 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