Child process в Node.js

среда, 8 ноября 2023 г.

child_process в Node.js - это модуль, который позволяет запускать внешние процессы из Node.js. Он предоставляет возможность создавать дочерние процессы, которые могут выполнять команды в командной строке и взаимодействовать с ними. child_process предоставляет несколько методов для управления этими процессами, таких как exec, spawn, fork и execFile. Каждый из этих методов имеет свои уникальные особенности и используется для разных типов взаимодействия с дочерними процессами.

Например, метод exec используется для выполнения команд в оболочке операционной системы, а метод spawn создает новые процессы и позволяет передавать аргументы и работать с потоками ввода-вывода. Модуль child_process широко используется для выполнения внешних программ, скриптов и командной строки из Node.js, что делает его мощным инструментом для обработки задач, требующих запуска внешних процессов.

Примеры использования модуля child_process в Node.js с использованием синтаксиса ES6:

1. Запуск внешней команды с использованием spawn:

import { spawn } from 'child_process';

const childProcess = spawn('ls', ['-l']);

childProcess.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

childProcess.stderr.on('data', (data) => {
  console.error(`stderr: ${data}`);
});

childProcess.on('close', (code) => {
  console.log(`Child process exited with code ${code}`);
});

В этом примере мы используем spawn для запуска команды "ls -l" и обрабатываем вывод команды через обработчики событий.

2. Запуск внешней команды с использованием exec:

import { exec } from 'child_process';

exec('echo "Hello, World"', (error, stdout, stderr) => {
  if (error) {
    console.error(`Error: ${error.message}`);
    return;
  }
  if (stderr) {
    console.error(`stderr: ${stderr}`);
  }
  console.log(`stdout: ${stdout}`);
});

Здесь мы используем exec для выполнения команды "echo" и выводим результаты выполнения команды.

3. Запуск внешней команды с использованием execFile:

import { execFile } from 'child_process';

const command = 'node';
const args = ['--version'];

execFile(command, args, (error, stdout, stderr) => {
  if (error) {
    console.error(`Error: ${error.message}`);
    return;
  }
  if (stderr) {
    console.error(`stderr: ${stderr}`);
  }
  console.log(`stdout: ${stdout}`);
});

Здесь мы используем execFile для выполнения команды "node" с аргументом "--version" и выводим результаты выполнения команды.

Fullstack-разработчик в Москве
Александр
Fullstack-разработчик в Москве

Профессиональная разработка веб-приложений на Node.js с использованием Express. Создание, продвижение, поддержка и обслуживание Веб-проектов. Эффективно, прибыльно.