Si te estás preparando para la certificación oficial de Node.js, el dominio de Child Processes representa el 8% de la prueba y se evalúa con un único ejercicio: la Task 3.1. Aquí aprenderás cómo abordarlo, qué métodos del core usar y cómo apoyarte en la documentación oficial durante el examen.
¿Qué evalúa el dominio de Child Processes en la certificación?
Este dominio mide tu habilidad para crear y manejar procesos hijos en Node.js usando la API nativa child_process. La buena noticia es que el ejercicio puede resolverse con varios métodos, así que puedes elegir el que mejor domines.
Las claves para aprobar esta sección son dos:
- Conocer las distintas formas de ejecutar operaciones con child processes, porque algunas son más directas que otras según el caso.
- Aprender las opciones más comunes que reciben estos métodos, ya que casi todos aceptan un objeto de configuración con propiedades clave para resolver el problema.
¿Qué es un child process en Node.js? Es un proceso hijo que Node.js crea para ejecutar comandos del sistema, archivos o scripts en paralelo o de forma síncrona, sin bloquear necesariamente el proceso principal.
¿Cómo identificar el método correcto de child_process?
La API child_process ofrece métodos asíncronos y síncronos. Entre los asíncronos están exec, execFile, spawn y fork. Entre los síncronos tienes execSync, execFileSync y spawnSync [02:28].
La pista para elegir el correcto siempre está en el enunciado. Si el ejercicio pide ejecutar un archivo de forma síncrona, el método indicado es execFileSync, porque combina dos requisitos: ejecuta un archivo específico y bloquea hasta terminar.
¿Cuál es la diferencia entre execSync y execFileSync? execSync ejecuta un comando completo de shell, mientras que execFileSync ejecuta directamente un archivo binario o script sin invocar un shell, lo que lo hace más eficiente y seguro.
¿Cómo se planteó la Task 3.1 en el examen?
El archivo answer.js exporta una función que recibe dos argumentos: un file (el archivo a ejecutar) y un directory (el directorio de trabajo). El enunciado pide:
- Crear un child process que ejecute el archivo recibido.
- Usar el argumento
directory como current working directory del proceso hijo.
- Garantizar que la ejecución sea síncrona.
¿Cómo resolver Task 3.1 paso a paso?
La solución es más sencilla de lo que parece cuando identificas el método y la opción correctos. Vamos por partes.
¿Cómo importar execFileSync desde child_process?
Lo primero es traer el método al archivo. Usas destructuring sobre el módulo child_process:
javascript
const { execFileSync } = require('child_process');
Con eso ya tienes disponible la función para ejecutar archivos de forma bloqueante.
¿Cómo pasar el directorio con la opción cwd?
Aquí entra la segunda clave del dominio: las opciones. execFileSync recibe como segundo o tercer argumento un objeto de configuración. Entre sus propiedades está cwd, que define el current working directory of the child process [03:55].
Entonces, dentro de la función answer, la implementación queda así:
javascript
const { execFileSync } = require('child_process');
function answer(file, directory) {
execFileSync(file, { cwd: directory });
}
module.exports = answer;
Con esa línea cumples los tres requisitos del enunciado: ejecutas el archivo, fijas el directorio de trabajo y lo haces de forma síncrona.
¿Por qué consultar la documentación durante el examen?
Una de las recomendaciones más valiosas para esta certificación es que puedes acceder a la documentación oficial de Node.js durante la prueba. No tienes que memorizar cada método ni cada propiedad.
Cuando dudes sobre cómo se usa un método, abre la documentación de child_process y revisa:
- La lista de métodos asíncronos y síncronos para descartar opciones.
- Los ejemplos de uso, que en la parte asíncrona muestran la firma de la función y se aplican igual a la versión síncrona.
- La tabla de opciones del objeto de configuración para encontrar propiedades como
cwd, env, timeout o encoding.
Esta práctica de verificar en la documentación cuando tienes dudas es exactamente lo que harías en un trabajo real, y es una habilidad que la certificación premia.
¿Ya intentaste resolver la Task 3.1 con otro método como spawnSync? Cuéntame en los comentarios qué enfoque usaste y cómo te fue.