1
讓我們看到的現象第一,爲什麼產卵的NodeJS進程成爲<defunct>直到父母離開
代碼的NodeJS:
const cp = require('child_process');
var ls = cp.spawn('ls', ['/']);
ls.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
ls.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
ls.on('close', (code) => {
console.log(`child process closed with code ${code}`);
});
while(true){}
運行該代碼的NodeJS,什麼都不顯示,似乎被觸發任何事件。
然後運行 「PS -ef | grep的LS | GRPE -v grep的」 在另一外殼,結果是:
liyuanq+ 10995 10990 0 11:06 pts/3 00:00:00 [ls] <defunct>
如果刪除代碼:
while(true){}
節點過程退出,並觸發開啓數據事件。
的問題是,爲什麼不點關閉衍生的進程時,它實際上完成了它的任務,直到父節點處理退出。
我的環境:
OS:Debian的8.4 x86_64的
節點:V6.1.0
我的上帝!解決了!謝謝! –