diff --git a/packages/api/core/src/api/start.ts b/packages/api/core/src/api/start.ts index bf42de68fc..2c20d8338d 100644 --- a/packages/api/core/src/api/start.ts +++ b/packages/api/core/src/api/start.ts @@ -277,6 +277,11 @@ export default autoTrace( process.stdin.pause(); } }); + + // On close, reset lastSpawned, it's dead + spawned.on('close', () => { + lastSpawned = null; + }); } else if (interactive && !process.stdin.isPaused()) { process.stdin.pause(); } @@ -306,6 +311,16 @@ export default autoTrace( } }); process.stdin.resume(); + + const handleTerminationSignal = function (signal: NodeJS.Signals) { + process.on(signal, function signalHandler() { + lastSpawned?.kill(signal); + }); + }; + + handleTerminationSignal('SIGINT'); + handleTerminationSignal('SIGTERM'); + handleTerminationSignal('SIGUSR2'); } const spawned = await forgeSpawnWrapper();