Home
Node.js
process Example (spawn child)
Updated Dec 21, 2023
Dot Net Perls
Process. It is common for a Node.js application to need to run an external process, like to encode images. With the child_process module, we can spawn subprocesses.
By calling the on() method on stdout, we can access a Buffer that has the output of the process. This is what would have been printed in the terminal window.
Example. We require the node child_process module to access useful methods like spawn(). To run this example, be sure to install cwebp (a program for generating WEBP images).
Step 1 We specify the input and output file names that we pass as arguments to cwebp. These are relative to the home directory.
Step 2 We call the spawn method. The first argument is the command we want to run, and the second is an array of arguments.
Array
Step 3 With stdout.on() we receive a Buffer full of the output bytes when data has been printed.
Buffer
Step 4 We use stderr.on() in the same was as stdout.on, but it receives the data written to the error log.
Step 5 When the close event occurs, we print the exit code of the process. The lambda receives an integer code.
const c = require("node:child_process"); // Step 1: specify the input and output file names to cwebp. const inputImage = "test/arrow.png"; const outputImage = "test/arrow.webp"; // Step 2: spawn the process and specify command-line arguments as an array. const cwebp = c.spawn("cwebp", ["-q", "30", inputImage, "-o", outputImage]); // Step 3: if stdout has data, print it as a string. cwebp.stdout.on("data", (data) => { console.log(data.toString()); }); // Step 4: if stderr has data, print it as a string. cwebp.stderr.on("data", (data) => { console.error(data.toString()); }); // Step 5: when child process is closed, exit and print the exit code. cwebp.on("close", (code) => { console.log("Exited with code:", code); });
Saving file 'test/arrow.webp' File: test/arrow.png Dimension: 245 x 127 Output: 818 bytes Y-U-V-All-PSNR 38.09 37.89 37.14 37.88 dB (0.21 bpp) block count: intra4: 28 (21.88%) intra16: 100 (78.12%) skipped: 41 (32.03%) bytes used: header: 39 (4.8%) mode-partition: 180 (22.0%) Residuals bytes |segment 1|segment 2|segment 3|segment 4| total macroblocks: | 4%| 14%| 29%| 53%| 128 quantizer: | 68 | 66 | 59 | 42 | filter level: | 24 | 18 | 26 | 6 | Exited with code: 0
Process versus child process. In Node, there is a process module as well as a child_process module. Process refers to the current process, and child_process is a subprocess.
Summary. With the spawn method, we can run subprocesses in Node.js. This is essential for certain tasks like encoding images with a separate program.
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on Dec 21, 2023 (new).
Home
Changes
© 2007-2025 Sam Allen