2011-06-18 60 views
1

我在绕过node.js的异步本质时遇到了麻烦。假设我想要一条执行'ls'命令并将结果(作为字符串)返回给浏览器的路由。如何使用child_process.exec来解决这个问题?下面是不正确的,但沿着什么样的线,我挣扎:检索node.js的结果child_process

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() 
}); 

这不是我的app.js的全部代码,但基本上我寻求帮助,在得到dir_list()来设置结果变量作为“ls -la”的输出。

回答

11

通回调到您的dir_list与LS称之为香格里拉大导致

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}); 
    }); 
}); 
+0

感谢您的答复。这个例子正是我需要完成的。 – ngmaloney