1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.watchdog = void 0;
- const child_process_1 = require("child_process");
- const watchdogCode = String.raw `
- const pid = parseInt(process.argv[1], 10)
- process.title = 'node (foreground-child watchdog pid=' + pid + ')'
- if (!isNaN(pid)) {
- let barked = false
- // keepalive
- const interval = setInterval(() => {}, 60000)
- const bark = () => {
- clearInterval(interval)
- if (barked) return
- barked = true
- process.removeListener('SIGHUP', bark)
- setTimeout(() => {
- try {
- process.kill(pid, 'SIGKILL')
- setTimeout(() => process.exit(), 200)
- } catch (_) {}
- }, 500)
- })
- process.on('SIGHUP', bark)
- }
- `;
- const watchdog = (child) => {
- let dogExited = false;
- const dog = (0, child_process_1.spawn)(process.execPath, ['-e', watchdogCode, String(child.pid)], {
- stdio: 'ignore',
- });
- dog.on('exit', () => (dogExited = true));
- child.on('exit', () => {
- if (!dogExited)
- dog.kill('SIGKILL');
- });
- return dog;
- };
- exports.watchdog = watchdog;
|