我需要從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