检索node.js child_process的结果

ngm*_*ney 1 node.js

我无法绕过node.js的异步性质.让我们假设我想要一个执行'ls'命令的路由并将结果(作为字符串)返回给浏览器.如何使用child_process.exec进行此操作?以下是不正确的,但沿着我正在努力的方向:

function dir_list() {
  var sys = require('sys');
  var exec = require('child_process').exec
  child = exec('ls -la', function(error, stdout, stderr) {
    //I would like to return stdout but can't figure out how
    return stdout;
  });
  return child;
}

app.get('/', function(req, res){
  res.render('index', {
  title: 'MyPage',
  subtitle: 'Below is a directory listing',
  results: dir_list()
});
Run Code Online (Sandbox Code Playgroud)

这不是我的app.js的整个代码,但基本上我正在寻找帮助,让dir_list()将结果变量设置为"ls -la"的输出.

And*_*rov 11

将回调传递给你的dir_list并用ls -la结果调用它

function dir_list(cb) {
  var sys = require('sys');
  var exec = require('child_process').exec
  child = exec('ls -la', function(error, stdout, stderr) {
    //I would like to return stdout but can't figure out how
    cb(stdout);
  });
}

app.get('/', function(req, res){
  dir_list(function(dir_list_output) {
      res.render('index', {
      title: 'MyPage',
      subtitle: 'Below is a directory listing',
      results: dir_list_output});
  });
});
Run Code Online (Sandbox Code Playgroud)