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-разработчик в МосквеПрофессиональная разработка веб-приложений на Node.js с использованием Express. Создание, продвижение, поддержка и обслуживание Веб-проектов. Эффективно, прибыльно.