const { spawn } = require('child_process');
const child = spawn('node', ['-e', 'console.log("done")']);
child.on('exit', (code) => {
console.log('Exit code:', code);
});When a child process finishes successfully without errors, it exits with code 0. This is a standard convention indicating success.
const { spawn } = require('child_process');
const child = spawn('node', ['-e', 'setTimeout(() => {}, 10000)']);
child.on('exit', (code, signal) => {
console.log('Exit code:', code);
console.log('Signal:', signal);
});
child.kill('SIGTERM');If a child process is terminated by a signal like SIGTERM, the exit code is null and the signal name is provided instead.
Unix systems use exit codes greater than 127 to indicate termination by signals, while Windows only uses positive integers for exit codes.
const { spawn } = require('child_process');
const child = spawn('node', ['-e', 'process.exit()']);
child.on('exit', (code, signal) => {
console.log('Exit code:', code);
console.log('Signal:', signal);
});Calling process.exit() without an argument exits with code 0. The exit event should receive code 0, so code being null indicates a logging or event handling mistake.
Exit code 130 means the process was terminated by signal 2 (SIGINT). Exit codes for signals are 128 plus the signal number.
