Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

81
Vistas
Escribir en la entrada estándar de child_process generado mientras se puede detener por separado

Para un proceso principal de CLI, tengo un proceso secundario en el que necesito escribir algunos datos antes de que se detenga (por ejemplo, un código de cierre de WebSocket que no sea 1006).

Este fragmento representa lo que estoy haciendo:

 setInterval(() => child.stdin.write("ping\n"), 1000); const { spawn } = require("child_process"); const child = spawn("node", ["-e", ` setInterval(() => console.log("child: pong"), 1000); process.on("beforeExit", () => { console.log("child: stopping"); }); process.stdin.on("close", () => console.log("stdin close")); process.stdin.on("finish", () => console.log("stdin finish")); process.on("SIGINT", () => console.log("child: SIGINT")); process.stdin.on("data", (c) => console.log("child: from parent:", c.toString("utf8").trim())); `], { detached: true, //// if 'ignore' is used, child.stdin is undefined // stdio: ["ignore", "inherit", "inherit"], }); child.stdout.pipe(process.stdout); child.stderr.pipe(process.stderr); process.on("SIGINT", () => { console.log("parent: stop requested"); child.stdin.write("stop\n"); // cleanup something setTimeout(() => { console.log("parent: stopping on our own discretion"); child.kill(0); process.exit(0); }, 500); });

Intenté usar Stream.Readable o Passthrough como propiedad de flujo de stdio, pero parece que NodeJS solo permite el uso de flujos de descriptores de archivos. No quiero ir tan lejos como para crear un archivo temporal solo para este caso.

Siento que esto debería ser posible/trivial, pero me estoy tirando de los pelos para que funcione.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El ejemplo simplificado en realidad funciona bien. Algo debe estar pasando con mi código original.

Producción:

 -> % node sample.js child: from parent: ping child: pong child: from parent: ping child: pong ^C parent: stop requested child: from parent: stop child: from parent: ping parent: stopping on our own discretion
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda