diff options
Diffstat (limited to 'lib/internal/bootstrap/node.js')
-rw-r--r-- | lib/internal/bootstrap/node.js | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js index 071b68903d..360b871d0c 100644 --- a/lib/internal/bootstrap/node.js +++ b/lib/internal/bootstrap/node.js @@ -67,9 +67,6 @@ process.config = JSON.parse(internalBinding('native_module').config); const rawMethods = internalBinding('process_methods'); // Set up methods and events on the process object for the main thread if (isMainThread) { - // This depends on process being an event emitter - mainThreadSetup.setupSignalHandlers(internalBinding); - process.abort = rawMethods.abort; const wrapped = mainThreadSetup.wrapProcessMethods(rawMethods); process.umask = wrapped.umask; @@ -320,6 +317,23 @@ if (process.env.NODE_V8_COVERAGE) { }; } +// Worker threads don't receive signals. +if (isMainThread) { + const { + isSignal, + startListeningIfSignal, + stopListeningIfSignal + } = mainThreadSetup.createSignalHandlers(); + process.on('newListener', startListeningIfSignal); + process.on('removeListener', stopListeningIfSignal); + // re-arm pre-existing signal event registrations + // with this signal wrap capabilities. + const signalEvents = process.eventNames().filter(isSignal); + for (const ev of signalEvents) { + process.emit('newListener', ev); + } +} + if (getOptionValue('--experimental-report')) { const { config, |