在Node.js模块中执行子进程
我正在创建一个Node模块,我想要一个叫做cpuUtilization的函数,这个函数会调用一个Python脚本,并返回它的输出结果。
var sys = require('sys')
var exec = require('child_process').exec;
exports.cpuUtilization = function() {
exec('./nodeprime/cpuUtilization.py', function (error, stdout, stderr) {
return(JSON.parse(stdout));
});
}
1 个回答
0
你没有从 cpuUtilization
得到结果,是因为 return
语句并不适用于那个函数,而是适用于那个函数内部的回调。
你需要把你的代码改成异步的,并且通过回调来返回结果:
exports.cpuUtilization = function (callback) {
exec('./nodeprime/cpuUtilization.py', function (err, stdout, stderr) {
if (err) return callback(err);
callback(null, JSON.parse(stdout));
});
};
在 Node.js 中,回调通常需要返回(至少)两个参数,第一个是错误信息,第二个是实际的数据。
现在你可以使用你的函数,比如:
cpuUtilization(function (err, data) {
// Do something with data ...
});
一般来说,我建议你多了解一下高阶函数。