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
我的上帝!解决了!谢谢! –