time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

signals.js (1295B)


      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 }