El módulo Child Process de Node.js proporciona la capacidad de generar y gestionar procesos hijos. Este módulo esencialmente proporciona a los desarrolladores de Node.js una forma de ejecutar comandos del sistema operativo y trabajar con la entrada y salida de estos comandos. Esto puede ser útil para tareas como la automatización de scripts, la llamada a ejecutables externos, etc.
Para utilizar el módulo Child Process, primero debes requerirlo en tu archivo:
```javascript
const cp = require(‘child_process’);
```
Puedes utilizar las funciones `spawn()`, `exec()`, `execFile()` y `fork()` que están disponibles en `child_process` para crear un proceso hijo:
1. `spawn()` – Lanza un nuevo proceso con un comando dado.
```javascript
let process = cp.spawn(‘ls’, [‘-lh’, ‘/usr’]);
process.stdout.on(‘data’, (data) => {
console.log(`stdout: ${data}`);
});
process.stderr.on(‘data’, (data) => {
console.error(`stderr: ${data}`);
});
process.on(‘close’, (code) => {
console.log(`Proceso hijo cerrado con el código ${code}`);
});
```
2. `exec()` – Lanza un shell y ejecuta un comando dentro de ese shell, transfiriendo el stdout y stderr de vuelta al proceso de Node.js.
```javascript
cp.exec(‘ls -lh /usr’, (err, stdout, stderr) => {
if (err) {
console.error(err);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
});
```
3. `execFile()` – Similar a `exec()`, pero inicia directamente el comando ejecutable que es más eficiente que la generación de un shell.
```javascript
cp.execFile(‘file.js’, [‘arg1’, ‘arg2’], (error, stdout, stderr) => {
// Tu código aquí
});
```
4. `fork()` – Es una versión especial del spawn() que se utiliza específicamente para generar procesos hijo nuevos que ejecutan módulos Node.js separados. El módulo devuelto y que se requiere se ejecuta en un nuevo proceso V8 y se invoca automáticamente.
```javascript
const child = cp.fork(`${__dirname}/child.js`);
child.on(‘message’, (message) => {
console.log(‘message from child:’, message);
});
child.send({ hello: ‘world’ });
```
Recuerda, la gestión de procesos hijo puede ser compleja, especialmente la gestión de errores y la limpieza de los procesos terminados.