0
我想在主進程中捕獲我的子進程的一些響應。我可以在主進程中記錄子進程的信息,但無法捕獲一些返回xyz響應。 這裏是主進程的代碼:如何在nodejs中捕獲子進程的響應
var express = require('express');
var app = express();
const
fs = require('fs'),
cp = require('child_process');
app.get('/',onRequest);
function onRequest(request, response) {
var express = require('express');
var app = express();
var child= cp.spawn('node' ,['./child_process/block.js'],filestreamCallback);
child.stdout.on('data', function(data) {
console.log('stdout: ==== ' + data);
});
child.stderr.on('data', function(data) {
console.log('stdout: ' + data);
});
child.on('close', function(code) {
console.log('closing code: ' + code);
});
function filestreamCallback() {
response.writeHead(200, {'Content-Type': 'text/plain'});
baflog.info("Reading Stream completed");
response.write('Thanks for Your patience!\n');
response.end();
}
}
app.listen(5000);
console.log('Server started');
Child process : block.js
/*Keep waiting for 10 seconds*/
console.log("Waiting for child Process (block.js) to complete......");
var startTime = new Date().getTime();
while (new Date().getTime() < startTime + 10000);
ret_resp();
var response = {status:'success'};
function ret_resp(){
return response;
}
console.log("Thank You for waiting......");
像控制檯I看到輸出爲: 標準輸出====:等待子流程(block.js)來完成...... -punws -sohan
標準輸出:====讓您久等了......
我不能看到回報迴應聲明 輸出任何人都可以建議如何捕捉子進程的響應?
你正在包裝消息在日誌中,我不想這樣做。我想要像叉子一樣。 process.send(msg)然後主進程接收消息。它可能與叉,但我不能看到派生/執行的方式。 – Sohan 2014-09-01 15:13:08
我已經更新了包含'fork()'用法的答案。 – mscdex 2014-09-01 15:28:31
我得到錯誤 child_process.js:402 拋出新的TypeError('message can not be undefined'); ^ 類型錯誤:消息不能被在process.target.send未定義 (child_process.js:402:13)在ret_resp (d:\節點的js \ baflog \ child_process \ block.js:16:17) 在空._onTimeout(d:\ Node Js \ baflog \ child_process \ block.js:13:5) at Timer.listOnTimeout [as ontimeout](timers.js:112:15) 結束代碼:8 – Sohan 2014-09-01 16:38:40