spawn() — new process, any executable. fork() — new Node.js process, IPC channel.
spawn():
1const { spawn } = require("child_process");2const child = spawn("ls", ["-la"]);34child.stdout.on("data", (data) => {5 console.log(data.toString());6});
fork():
1const { fork } = require("child_process");2const child = fork("./worker.js");34// Send message to child5child.send({ task: "compute" });67// Receive from child8child.on("message", (msg) => {9 console.log(msg);10});
Key differences: