/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
lib/internal/bootstrap/switches/is_not_main_thread.js
58 строк
1 KB
Matteo Collina
worker: flush stdout and stderr on exit
06 янв 2025, 10:22
Не верифицирован
06 янв 2025, 10:22
b0c65bb
Код
Авторство
О чём код?
'use strict'; const { ObjectDefineProperty, } = primordials; delete process._debugProcess; delete process._debugEnd; function defineStream(name, getter) { ObjectDefineProperty(process, name, { __proto__: null, configurable: true, enumerable: true, get: getter, }); } defineStream('stdout', getStdout); defineStream('stdin', getStdin); defineStream('stderr', getStderr); // Worker threads don't receive signals. const { startListeningIfSignal, stopListeningIfSignal, } = require('internal/process/signal'); process.removeListener('newListener', startListeningIfSignal); process.removeListener('removeListener', stopListeningIfSignal); // ---- keep the attachment of the wrappers above so that it's easier to ---- // ---- compare the setups side-by-side ----- const { createWorkerStdio, kStdioWantsMoreDataCallback, } = require('internal/worker/io'); let workerStdio; function lazyWorkerStdio() { if (workerStdio === undefined) { workerStdio = createWorkerStdio(); process.on('exit', flushSync); } return workerStdio; } function flushSync() { workerStdio.stdout[kStdioWantsMoreDataCallback](); workerStdio.stderr[kStdioWantsMoreDataCallback](); } function getStdout() { return lazyWorkerStdio().stdout; } function getStderr() { return lazyWorkerStdio().stderr; } function getStdin() { return lazyWorkerStdio().stdin; }