nodejs/node
GitHub で見るchild_process: 'close' not emitted after .disconnect() in parent process
Open
#19,433 opened on 2018年3月18日
child_processhelp wantedstale
Repository metrics
- Stars
- (117,218 stars)
- PR merge metrics
- (平均マージ 18d 17h) (30d で 219 merged PRs)
説明
- Version: v9.8.0
- Platform: Linux 64bit
- Subsystem: child_process
When calling child.disconnect() from a parent process (not in cluster mode), the child process object does not emit a close event after the exit event.
If however the child process itself calls process.disconnect() it works as expected.
Example:
// parent.js
const child_process = require('child_process');
const child = child_process.fork('./child.js', {
stdio: ['pipe', 'pipe', 'pipe', 'ipc']
});
setTimeout(() => {
child.disconnect();
}, 1000);
child.on('exit', () => {
console.log('exit');
});
child.on('close', () => {
console.log('close');
});
child.stderr.pipe(process.stderr);
child.stdout.pipe(process.stdout);
// child.js
process.on('disconnect', () => {
console.log('cya');
});
Output:
cya
exit
Expected Output:
cya
exit
close