Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 76225c6b9f |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@push.rocks/smartexit",
|
||||
"version": "2.0.1",
|
||||
"version": "2.0.2",
|
||||
"private": false,
|
||||
"description": "A library for managing graceful shutdowns of Node.js processes by handling cleanup operations, including terminating child processes.",
|
||||
"main": "dist_ts/index.js",
|
||||
|
||||
@@ -187,18 +187,25 @@ export class ProcessLifecycle {
|
||||
});
|
||||
}
|
||||
|
||||
/** Synchronous last-resort: SIGKILL any remaining tracked PIDs. */
|
||||
/** Synchronous last-resort: SIGKILL any remaining tracked process groups. */
|
||||
private handleExit(): void {
|
||||
const instances = ProcessLifecycle.getInstances();
|
||||
let killed = 0;
|
||||
|
||||
for (const instance of instances) {
|
||||
for (const pid of instance.trackedPids) {
|
||||
// Kill entire process group (negative PID) for detached children
|
||||
try {
|
||||
process.kill(pid, 'SIGKILL');
|
||||
process.kill(-pid, 'SIGKILL');
|
||||
killed++;
|
||||
} catch {
|
||||
// Process already dead
|
||||
// Process group may not exist, try single PID
|
||||
try {
|
||||
process.kill(pid, 'SIGKILL');
|
||||
killed++;
|
||||
} catch {
|
||||
// Process already dead
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user