Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

82
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda