我有一個C++
程序和一個Python
腳本,我想將它合併到我的node.js
網絡應用程序中。如何從node.js調用外部腳本/程序
我想用它們來解析上傳到我的網站的文件;它可能需要幾秒鐘的時間來處理,所以我會避免阻止應用程序。
我該如何接受該文件,然後在node.js
控制器的子流程中運行C++
程序和腳本?
我有一個C++
程序和一個Python
腳本,我想將它合併到我的node.js
網絡應用程序中。如何從node.js調用外部腳本/程序
我想用它們來解析上傳到我的網站的文件;它可能需要幾秒鐘的時間來處理,所以我會避免阻止應用程序。
我該如何接受該文件,然後在node.js
控制器的子流程中運行C++
程序和腳本?
參見child_process。這裏是一個使用spawn
的示例,它允許您在輸出數據時寫入stdin並從stderr/stdout中讀取數據。如果您不需要寫入stdin,並且可以在進程完成時處理所有輸出,則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');
});
您的C++程序是從Python內部調用的還是這兩個獨立的調用? 1)到Python和2)到C + +應用程序? 或者Python代碼加載並調用您的C++應用程序? –
節點的'child_process'東西將運行異步進程。如果你只想從節點內啓動一個程序,那就可以了。 – Joe
@StevenLeggett python腳本和C++應用程序完全不相互作用;我想分別給他們打電話(他們也不需要以任何特定的順序)。 – alh