17 lines
428 B
JavaScript
17 lines
428 B
JavaScript
import {addAbortListener} from 'node:events';
|
|
import {onExit} from 'signal-exit';
|
|
|
|
// If the `cleanup` option is used, call `subprocess.kill()` when the parent process exits
|
|
export const cleanupOnExit = (subprocess, {cleanup, detached}, {signal}) => {
|
|
if (!cleanup || detached) {
|
|
return;
|
|
}
|
|
|
|
const removeExitHandler = onExit(() => {
|
|
subprocess.kill();
|
|
});
|
|
addAbortListener(signal, () => {
|
|
removeExitHandler();
|
|
});
|
|
};
|