Nodejs如何等待subprocess退出或允许响应

我的nodejs应用程序收到一个特定的请求后,产生一个使用spawn的subprocess(我不能使用exec,因为输出很大,不知道是否可以添加callback到产生的进程)准备响应。

我希望subprocess发送响应或主进程等到孩子准备响应并退出。

问题是主stream程不等孩子。

我编写了这样的东西

inputQuery: function(req, res){ var output=""; var query = "printjson(db.getCollectionNames())"; var temp = spawn("mongo", ["mongoweb ", "-eval", query]); temp.on('error', function (err){ console.log(err); }); temp.stdout.on('data', function(data){ output += data; }); temp.stderr.on('data', function(data){ console.log(data); }); temp.on("exit", function(code){ console.log("Output is :" + output); res.send(output); // Either send response here or after the log message below }); console.log("I want this to wait or let child respond"); } 

我很困难,不知道该怎么做。 请帮忙。 提前致谢。

那么我最终做的是产生一个进程在一个临时文件中产生结果。 然后当孩子完成时(基本上是一个标志)传递一个消息给父母。 等待这个消息,并获取消息,启动另一个进程来反复复制缓冲区,并保持循环stdout直到完成。

注:对于大多数情况下,您可以select更改exec缓冲区的大小,并且应该可以使其变得相当大。 我想它可以去1或2 MB的东西,但是我不确定。

会很高兴有人有一个更好的主意!

@Krasimir让我知道你如何解决它。