2012-11-01 28 views
1

我想在节点中执行一个子进程,其名称来自一个post请求。我使用express,因此app.post()。我的代码如下。Node.js child_process.exec()

app.post('/*', function(req, res) { 

    var buf = new Buffer(256); 
    var cont_len = buf.write(req.url, -1); 
    var controller = buf.toString('utf8', 0, cont_len); 
    var controller = controller.concat(' ') 

    var args = req.param('args', null); 

    var command = __root+__controllers+controller+args; 

    console.log(command); 

    c = exec(command, 

    function (error, stdout, stderr) { 
    res.send(stdout); 
    res.send(stderr); 

    if (error !== null) { 
     res.send(error); 
    } 
    }); 

}); 

不工作的部分是当我尝试使用动态命令构建命令字符串时。我可以硬编码的命令变量,它的工作原理,但是当我使用变量'控制器'它不会执行我的过程。另外,有没有一种方法来回应子进程的返回值,还是必须坚持只使用stdout?

回答

0

您可以通过访问req.body请求参数

var command = req.body.theparam; 
+0

由于多数民众赞成由我的代码更好一点。仍然不能建立一个有效的命令字符串,任何想法? – ubiQ

+0

你试图运行什么命令? – chovy

相关问题