The child_process
module in Node.js allows you to spawn child processes and interact with them. You can use it to run external commands and handle their input, output, and errors. Here's a basic guide on how to use the child_process
module:
spawn
:The spawn
function is used to start a new process and it returns a ChildProcess
object. It's suitable for long-running processes with a stream of data.
javascriptconst { spawn } = require('child_process');
const command = 'ls';
const args = ['-l', '-a'];
const child = spawn(command, args);
child.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
child.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
child.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
exec
:The exec
function is used when you want to run a command in a shell and buffer the output. It's suitable for short-lived commands.
javascriptconst { exec } = require('child_process');
const command = 'ls -l -a';
exec(command, (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
});
execFile
:The execFile
function is similar to exec
but it allows you to specify the exact executable file to run.
javascriptconst { execFile } = require('child_process');
const command = 'ls';
const args = ['-l', '-a'];
execFile(command, args, (error, stdout, stderr) => {
if (error) {
console.error(`execFile error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
});
fork
:The fork
function is used to spawn a new Node.js process and execute a specified module with an IPC (Inter-Process Communication) channel.
javascriptconst { fork } = require('child_process');
const child = fork('child.js');
child.on('message', (message) => {
console.log(`Message from child: ${message}`);
});
child.send({ hello: 'world' });
These are some basic examples to get you started. Make sure to handle errors appropriately, and be cautious when dealing with user input to prevent security vulnerabilities like command injection.