Node.js子进程执行shell获取返回值

初学nodejs,打算用这来做一个公司的服务器管理系统,需要用到执行shell,从网上了解到调用shell是用新开一个子进程的方法:

var value = 0;
var process = require('child_process');
process.exec('shell命令', function(err, stdout, errout){
    // err是执行结果,是否有错
    // stdout是标准输出,即shell命令执行后的结果
    // errout是错误输出
    value = stdout;// 把返回值给value
});
res.json({"value":value});

 这么做看起来是没什么问题,但是,执行完会发现value一直是0,原因就在于多线程。

所以,正确解决应该是:

var value = 0;
var process = require('child_process');
value = process.execSync('ps -fu pex | grep ' + key + ' | grep -v grep | wc -l').toString();
res.json({"value":value});

 没有使用process.exec方法测试,不知道这种是不是也可以。

这个是从https://stackoverflow.com/questions/30134236/use-child-process-execsync-but-keep-output-in-console看到的:



 

初学,不知道有没有其他更好的解决办法,有大神望指教。

猜你喜欢

转载自cning-cn.iteye.com/blog/2390157