/** * Best-effort process-tree termination with graceful shutdown. * - Windows: use taskkill /T to include descendants. Sends SIGTERM-equivalent * first (without /F), then force-kills if process survives. * - Unix: send SIGTERM to process group first, wait grace period, then SIGKILL. * * This gives child processes a chance to clean up (close connections, remove * temp files, terminate their own children) before being hard-killed.
*/
export function killProcessTree(pid: number, opts?: { graceMs?: number }): void { if (!Number.isFinite(pid) || pid <= 0) { return;
}
const graceMs = normalizeGraceMs(opts?.graceMs);
if (process.platform === "win32") {
killProcessTreeWindows(pid, graceMs); return;
}
killProcessTreeUnix(pid, graceMs);
}
function normalizeGraceMs(value?: number): number { if (typeof value !== "number" || !Number.isFinite(value)) { return DEFAULT_GRACE_MS;
} return Math.max(0, Math.min(MAX_GRACE_MS, Math.floor(value)));
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.