Node.js
Child processes e IPC
Ejecución de procesos externos desde Node.js con spawn, exec, fork e IPC, incluyendo streams, argumentos, señales, errores y riesgos de seguridad.
- Última actualización
- Actualizada
- Nivel
- Aplicación
Node.js
Ejecución de procesos externos desde Node.js con spawn, exec, fork e IPC, incluyendo streams, argumentos, señales, errores y riesgos de seguridad.
spawn: streams y argumentos separados.exec: ejecuta mediante shell y acumula output.execFile: ejecuta un archivo sin shell por defecto.fork: inicia otro proceso Node con canal IPC.import { spawn } from "node:child_process";
const child = spawn("git", ["status", "--short"], {
stdio: ["ignore", "pipe", "pipe"]
});
child.stdout.pipe(process.stdout);
child.stderr.pipe(process.stderr);
child.on("error", console.error);
child.on("close", (code, signal) => {
console.log({ code, signal });
});Nunca construyas un comando shell concatenando entrada no confiable.
// inseguro
exec(`convert ${userPath}`);Prefiere executable y argumentos separados con spawn o execFile.
exec acumula stdout y stderr con un límite. Para output grande usa spawn y streams.
fork permite process.send() y eventos message. Los mensajes se serializan; no comparten memoria ordinaria.
Maneja error al iniciar, exit code, señal, stdin cerrado, timeouts y terminación. Evita procesos huérfanos y limpia grupos cuando corresponda.
exit implica streams completamente drenados.spawn es preferible para streams y argumentos seguros.Worker threads aporta paralelismo dentro del mismo proceso.