Node.js — Process
Объект Process является экземпляром EventEmitter и запускает следующие события:
Exit — Запускается при выходе из процесса. В этот момент невозможно предотвратить выход из цикла событий, после того как все прослушиватели выхода закончатся, процесс завершится.
beforeExit — Это событие запускается, когда node очищает цикл событий и на данный момент не существует других событий, которые должны быть запланированы. Как правило, когда больше не существует запланированных задач, осуществляется выход из node, но прослушиватель для «beforeExit» может выполнять асинхронные вызовы и продолжать работу node.
uncaughtException — Запускается, когда в цикле событий снова и снова возникает исключение. Если для этого исключения добавлен прослушиватель, действие по умолчанию (которое должно вывести результаты текущей операции в стеке и завершить процесс) выполняться не будет.
Профессия Frontend-разработчик PRO
Готовим Frontend-разработчиков с нуля
На курсе вы научитесь создавать интерфейсы веб-сервисов с помощью языков программирования и дополнительных технологий. Сможете разрабатывать планировщики задач, мессенджеры, интернет-магазины…
Signal Events — Запускается, когда процессы получают сигнал, такой как SIGINT, SIGHUP и т. д.
Пример
Создайте файл js с именем main.js со следующим кодом для прослушивания события exit:
В результате вы получите следующее.
Коды выхода
Когда больше не выполняются асинхронных операций, выход из Node как правило осуществляется с кодом состояния 0. Ниже описаны другие коды выхода:
1 Неустранимое исключение — Возникло неустранимое исключение, и оно не было обработано обработчиком событий domain или uncaughtException.
2 Неиспользуемый — Зарезервировано Bash для встроенных внештатных ситуаций.
3 Внутренняя ошибка парсинга JavaScript — Исходный код JavaScript, встроенный в процесс начальной загрузки Node, вызвал ошибку синтаксического парсинга. Это случается крайне редко, и как правило при разработке самого Node.
4 Внутренняя ошибка оценки JavaScript — Исходный код JavaScript, встроенный в процесс начальной загрузки Node, не смог вернуть значение функции при оценке. Это происходит крайне редко, и как правило при разработке самого Node.
5 Критическая ошибка — В V8 произошла критическая неустранимая ошибка. Как правило, сообщение выводится в stderr с префиксом FATAL ERROR.
6 Внутренний Non-function обработчик исключений — Возникло необработанное исключение, но внутренняя функция обработчика критических исключений была каким-либо образом задана, как non-function и не могла быть вызвана.
7 Сбой внутреннего обработчика исключений — Возникло необработанное исключение, и сама внутренняя функция обработчика критических ошибок выдала ошибку при попытке обработать его.
9 Недействительный аргумент — Был указан либо неизвестный параметр, либо параметр, для которого должно задаваться значение, был предоставлен без значения.
10 Внутренняя ошибка исполнения JavaScript — Исходный код JavaScript, встроенный в процесс начальной загрузки Node, вызвал ошибку при вызове функции начальной загрузки. Это случается крайне редко, и как правило при разработке самого Node.
11 Недопустимый аргумент отладки — Были установлены параметры —debug и/или —debug-brk, но при этом был указан недопустимый номер порта.
> 128 Сигнал выхода — Если Node получает сигнал критической ошибки, такой как SIGKILL или SIGHUP, тогда его код выхода будет равен 128 плюс значение кода сигнала. Это стандартная практика Unix, так как коды выхода определены как 7-битные целые числа, а сигналы выхода имеют более высокую разрядность.
Свойства процесса
Процесс предоставляет много важных свойств, для лучшего контроля системного взаимодействия.
Stdout — Записываемый поток в stdout.
Stderr — Записываемый поток в stderr.
Stdin — Записываемый поток для stdin.
argv — Массив, содержащий аргументы командной строки. Первый элемент — «node», второй элемент — имя файла JavaScript.Следующие элементы — любые дополнительные аргументы командной строки.
execPath — Это абсолютный путь к исполняемому файлу, который запустил данный процесс.
execArgv — Это набор специфичных для node параметров командной строки из исполняемого файла, который запустил данный процесс.
Env — Объект, содержащий пользовательскую среду.
ExitCode — Число, представляющее код выхода процесса, когда процесс завершается корректно, либо без указания кода, когда выход осуществляется через process.exit().
Version — Скомпилированное свойство, которое предоставляет NODE_VERSION.
Versions — Свойство, отображающее строки версии node и его зависимостей.
Config — Объект, содержащий JavaScript-представление параметров конфигурации, которые использованы для компиляции текущего исполняемого файла node. Это то же самое, что и файл config.gypi, который был создан при запуске скрипта ./configure.
title — Getter/setter, который задает что выводить ‘ps’.
arch — В какой процессорной архитектуре вы работаете: ‘arm’, ‘ia32’ или ‘x64’
platform — На какой платформе вы работаете: ‘darwin’, ‘freebsd’, ‘linux’, ‘sunos’ или ‘win32’,
mainModule — Альтернативный способ извлечения require.main. Разница заключается в том, что если основной модуль изменяется во время выполнения, require.main может по-прежнему ссылаться на исходный основной модуль в модулях, которые должны были подключаться до внесения изменений. В общем случае можно с уверенностью предполагать, что оба они относятся к одному модулю.
Пример
Создайте файл js с именем main.js со следующим кодом:
Вы должны получить следующий результат на компьютере на Linux:
Описание методов
Process предоставляет множество важных методов для лучшего контроля над взаимодействием системы.
abort() — Указывает node запустить отмену. Указывает выйти из node и сгенерировать файл ядра.
chdir(directory) — Изменяет текущий рабочий каталог процесса или генерирует исключение, если это не удается.
cwd() — Возвращает текущий рабочий каталог процесса.
exit( ) — Завершает процесс с указанным кодом. Если опустить параметр, exit использует код «success» — 0.
getgid() — Получает групповой идентификатор процесса. Это числовой идентификатор группы, а не имя группы. Эта функция доступна только для POSIX платформ (то есть не Windows, Android).
setgid(id) — Устанавливает групповой идентификатор процесса. (См. setgid(2)). Принимает либо числовой идентификатор, либо строку groupname. Если указано groupname, этот метод блокирует выполнение при обработке числового идентификатора. Эта функция доступна только для POSIX платформ (то есть не для Windows, Android).
getuid() — Получает идентификатор пользователя процесса. Это числовой идентификатор, а не имя пользователя. Эта функция доступна только на POSIX платформах (то есть не Windows, Android).
setuid(id) — Устанавливает идентификатор пользователя процесса (см. Setgid(2)). Принимает либо числовой идентификатор, либо строку username. Если указано имя пользователя, этот метод блокирует выполнение при обработке числового идентификатора. Эта функция доступна только для POSIX платформ (то есть не для Windows, Android).
getgroups() — Возвращает массив с дополнительными идентификаторами группы. POSIX оставляет его неопределенным, если включен эффективный идентификатор группы, но node.js всегда предоставляет его. Эта функция доступна только на POSIX платформах (то есть не Windows, Android).
setgroups(groups) — Задает дополнительные идентификаторы групп. Это операция требует определенных прав доступа и предполагает, чтобы вы находились в корневом каталоге или имели возможность выполнить CAP_SETGID. Эта функция доступна только для POSIX платформ (то есть не для Windows, Android).
initgroups(user, extra_group) — Считывает /etc/group и инициализирует список групп доступа, используя все группы, членом которых является пользователь. Это операция, требующая определенных прав доступа, которая подразумевает, что вы должны находиться в корневом каталоге или имели возможность выполнить CAP_SETGID. Эта функция доступна только для POSIX платформ (то есть не для Windows, Android).
kill(pid[, signal]) — Отправляет сигнал в process. pid — это идентификатор процесса, а signal — строка, описывающая отправляемый сигнал. Имена сигналов — это строки, такие как «SIGINT» или «SIGHUP». Если опустить параметр, сигнал по умолчанию — «SIGTERM».
memoryUsage() — Возвращает объект, описывающий использование памяти процесса Node, указываемое в байтах.
nextTick(callback) — После того как текущий цикл событий завершится, вызывает функцию обратного вызова.
umask([mask]) — Устанавливает или читает маску режима создания файла процесса. Дочерние процессы наследуют маску от родительского процесса. Возвращает старую маску, если задан аргумент mask, в противном случае возвращает текущую маску.
uptime() — Время прошедшее с момента запуска Node в секундах.
hrtime() — Возвращает текущее реальное время с высокой точностью в массиве [секунды, наносекунды]. Оно указывается относительно произвольного времени в прошлом. Это не связано со временем суток и поэтому перевод часов на зимнее или летнее время на него не влияет. Основное использование — измерение производительности между интервалами.
Пример
Создайте файл js с именем main.js со следующим кодом: