| Leo Repp | 58b9f11 | 2021-11-22 11:57:47 +0100 | [diff] [blame^] | 1 | // This is not the set of all possible signals. |
| 2 | // |
| 3 | // It IS, however, the set of all signals that trigger |
| 4 | // an exit on either Linux or BSD systems. Linux is a |
| 5 | // superset of the signal names supported on BSD, and |
| 6 | // the unknown signals just fail to register, so we can |
| 7 | // catch that easily enough. |
| 8 | // |
| 9 | // Don't bother with SIGKILL. It's uncatchable, which |
| 10 | // means that we can't fire any callbacks anyway. |
| 11 | // |
| 12 | // If a user does happen to register a handler on a non- |
| 13 | // fatal signal like SIGWINCH or something, and then |
| 14 | // exit, it'll end up firing `process.emit('exit')`, so |
| 15 | // the handler will be fired anyway. |
| 16 | // |
| 17 | // SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised |
| 18 | // artificially, inherently leave the process in a |
| 19 | // state from which it is not safe to try and enter JS |
| 20 | // listeners. |
| 21 | module.exports = [ |
| 22 | 'SIGABRT', |
| 23 | 'SIGALRM', |
| 24 | 'SIGHUP', |
| 25 | 'SIGINT', |
| 26 | 'SIGTERM' |
| 27 | ] |
| 28 | |
| 29 | if (process.platform !== 'win32') { |
| 30 | module.exports.push( |
| 31 | 'SIGVTALRM', |
| 32 | 'SIGXCPU', |
| 33 | 'SIGXFSZ', |
| 34 | 'SIGUSR2', |
| 35 | 'SIGTRAP', |
| 36 | 'SIGSYS', |
| 37 | 'SIGQUIT', |
| 38 | 'SIGIOT' |
| 39 | // should detect profiler and enable/disable accordingly. |
| 40 | // see #21 |
| 41 | // 'SIGPROF' |
| 42 | ) |
| 43 | } |
| 44 | |
| 45 | if (process.platform === 'linux') { |
| 46 | module.exports.push( |
| 47 | 'SIGIO', |
| 48 | 'SIGPOLL', |
| 49 | 'SIGPWR', |
| 50 | 'SIGSTKFLT', |
| 51 | 'SIGUNUSED' |
| 52 | ) |
| 53 | } |