diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2019-02-10 19:28:16 +0800 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-02-24 23:41:27 +0100 |
commit | 34470b0524cf76fc3fee985f0b1bf0874a3c90bb (patch) | |
tree | 40193d4c24f83b021e66e4dba34b3b6d6ba0ec5a /lib/internal/bootstrap/pre_execution.js | |
parent | 7e0ddf66b9e09a27e0761b487342027ed6284027 (diff) | |
download | android-node-v8-34470b0524cf76fc3fee985f0b1bf0874a3c90bb.tar.gz android-node-v8-34470b0524cf76fc3fee985f0b1bf0874a3c90bb.tar.bz2 android-node-v8-34470b0524cf76fc3fee985f0b1bf0874a3c90bb.zip |
process: setup signal handler in prepareMainThreadExecution
Because this is only necessary in the main thread.
Also removes the rearming of signal events since no
signal event handlers should be created during the execution
of node.js now that we've made the creation of stdout and stderr
streams lazy - this has been demonstrated in the test coverage.
PR-URL: https://github.com/nodejs/node/pull/26227
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'lib/internal/bootstrap/pre_execution.js')
-rw-r--r-- | lib/internal/bootstrap/pre_execution.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js index 556c6ba39e..57f7420d6c 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js @@ -8,6 +8,9 @@ let traceEventsAsyncHook; function prepareMainThreadExecution() { setupTraceCategoryState(); + // Only main thread receives signals. + setupSignalHandlers(); + // If the process is spawned with env NODE_CHANNEL_FD, it's probably // spawned by our child_process module, then initialize IPC. // This attaches some internal event listeners and creates: @@ -28,6 +31,28 @@ function prepareMainThreadExecution() { loadPreloadModules(); } +function setupSignalHandlers() { + const { + createSignalHandlers + } = require('internal/process/main_thread_only'); + const { + startListeningIfSignal, + stopListeningIfSignal + } = createSignalHandlers(); + process.on('newListener', startListeningIfSignal); + process.on('removeListener', stopListeningIfSignal); + + if (getOptionValue('--experimental-report')) { + const { + config, + handleSignal + } = require('internal/process/report'); + if (config.events.includes('signal')) { + process.on(config.signal, handleSignal); + } + } +} + function setupTraceCategoryState() { const { asyncHooksEnabledInitial, |