我需要从node.js产生一个子进程,并观察它的标准输出一段时间,然后关闭管道(以便节点进程可以终止)。如何在node.js中关闭子进程的stdio管道?
这是我的基本代码(这不会终止节点处理):
const childProcess = require("child_process");
const child = childProcess.spawn("httpserver");
child.stdout.on("data", (data) => {
console.log("child> " + data);
// Disconnect Now ... How?
});
我已经试过如下:
- 使用
detached:true
选项,并呼吁child.unref()
- 移除“data”listener
C颂上述变化,但仍然不能正常工作:
const child = childProcess.spawn("httpserver", [], {detached: true});
child.stdout.on("data", function cb(data) {
console.log("child> " + data);
child.stdout.removeListener("data", cb);
});
child.unref();
是否有任何其他的方式来从子进程关闭stdout
管,并断开?
有点关系:在文档中提到一个child.disconnect()
API,但是当我用它上面,我得到一个功能没有发现错误。这是在这里使用的正确的API,为什么在我的情况下不可用?
这可以帮助http://stackoverflow.com/questions/20187184/how-to-kill-childprocess-in-nodejs – AshBringer
@BipBip我不想杀子进程。我需要保持它运行,并从中“分离”节点进程。 – HRJ