Learn how to spawn a child process with Node.js
Node.js provides the child_process
module, which allows you to spawn child processes.
To get started, require the module and access the spawn
function:
const { spawn } = require('child_process');
The spawn
function takes two parameters. The first parameter is the command to run, and the second parameter is an array containing a list of options.
Here’s an example:
spawn('ls', ['-lh', 'test']);
In this case, the ls
command is executed with two options: -lh
and test
. The result is a detailed output of the test
file:
-rw-r--r-- 1 flaviocopes staff 6B Sep 25 09:57 test
The spawn()
function call returns an instance of the ChildProcess
class, which identifies the spawned child process.
Here’s a slightly more complicated example that shows how to watch the test
file and run the ls -lh
command whenever it changes:
'use strict';
const fs = require('fs');
const { spawn } = require('child_process');
const filename = 'test';
fs.watch(filename, () => {
const ls = spawn('ls', ['-lh', filename]);
});
There’s one more step to complete. To see the output of the child process, we need to pipe it to the main process. This can be done by calling the pipe()
method on the stdout
property of the child process:
'use strict';
const fs = require('fs');
const { spawn } = require('child_process');
const filename = 'test';
fs.watch(filename, () => {
const ls = spawn('ls', ['-lh', filename]);
ls.stdout.pipe(process.stdout);
});
Tags: Node.js, child process, spawn, command execution