Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

330
Views
¿Cómo interrumpir child_process mediante un comando dado por el proceso principal?

Actualmente estoy trabajando en un proyecto que requiere que el usuario haga clic en el botón 'ejecutar' para llamar a child_process en el backend para ejecutar una tarea que requiere mucho tiempo. Los códigos son los siguientes,

 let child = child_process.spawn(//args); let data = ''; let err = ''; for await(const chunk of child.stdout) { data += chunk; } for await(const chunk of child.stderr) { err += chunk; } return {"out": data, "err": err};

Aquí se omite la decodificación. La tarea de child_process generaría todos los resultados al final del proceso, por lo que no habría resultados mientras la tarea esté en curso.

Y la interfaz de usuario tiene un botón para que el usuario cancele la tarea mientras se está ejecutando. He intentado if (cancelFlag) {child.kill('SIGTERM')} justo después de child_process.spawn , pero no funcionó. ¿Supongo que se necesita un oyente para child_process?

Gran gracias por cualquier sugerencia.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Si está utilizando un sistema POSIX, enviar SIGTERM al niño debería eliminar el proceso de forma predeterminada.

Sin embargo, en Windows, SIGTERM solo está disponible para escuchar y no tiene un comportamiento predeterminado https://nodejs.org/api/process.html#signal-events .

Si está programando en Windows, debería poder agregar un oyente para la señal SIGTERM

about 4 years ago · Juan Pablo Isaza Report

0

child_process.spawn acepta la señal y killSignal en las opciones para cancelar el proceso killSignal es SIGTERM por defecto, y la solución descrita en las respuestas anteriores

Pero aquí hay un ejemplo con un controlador de señal y cancelación.

 let abortController = new AbortController(); let child = ChildProcess.spawn("sleep", ["1"], { signal: abortController.signal, }); setTimeout(() => { abortController.abort(); }, 300);
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!