我有一个 C++
程序和一个 Python
脚本,我想将它们合并到我的 node.js
Web 应用程序中。
我想用它们来解析上传到我网站的文件;处理可能需要几秒钟,所以我也会避免阻止该应用程序。
我怎样才能接受文件,然后在 node.js
Controller 的子进程中运行 C++
程序和脚本?
最佳答案
见 child_process .这是一个使用 spawn
的示例,它允许您在输出数据时写入 stdin 并从 stderr/stdout 读取。如果您不需要写入标准输入并且可以在进程完成时处理所有输出,则 child_process.exec
提供了更短的语法来执行命令。
// with express 3.x
var express = require('express');
var app = express();
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(app.router);
app.post('/upload', function(req, res){
if(req.files.myUpload){
var python = require('child_process').spawn(
'python',
// second argument is array of parameters, e.g.:
["/home/me/pythonScript.py"
, req.files.myUpload.path
, req.files.myUpload.type]
);
var output = "";
python.stdout.on('data', function(data){ output += data });
python.on('close', function(code){
if (code !== 0) {
return res.send(500, code);
}
return res.send(200, output);
});
} else { res.send(500, 'No file found') }
});
require('http').createServer(app).listen(3000, function(){
console.log('Listening on 3000');
});
关于python - 如何从 node.js 调用外部脚本/程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20972788/