Estoy tratando de ejecutar procesos de scripts/node.js desde otros procesos de node.js. Descubrí cómo iniciarlos con child_process.spawn() y tengo el PID pero no puedo encontrar la manera de matarlos. Usar child_process.exec() para ejecutar taskkill con no funciona incluso con /F , aunque dice que la "eliminación de tareas" fue exitosa, la ventana node.js aún se está ejecutando. Incluso probé el stop-process de PowerShell, pero tampoco funciona. ¿Cómo lo mato? (de nodo.js)
Editar:
Tanto process.kill(pid,15) como process.kill(pid,9) terminan con:
Error: matar ESRCH errno: -4040, código: 'ESRCH', syscall: 'matar'
NodeJS tiene un método llamado kill en el objeto de process global, kill toma un PID (ID de proceso) y una SIGNAL opcional (señal de matar) para enviar al proceso identificado por PID .
Así es como se usa
process.kill(pid, SIGNAL) -> SIGNAL es opcional.
Suponiendo que la identificación del proceso es 1000
process.kill(1000) , sin especificar una señal envía automáticamente SIGTERM al id de proceso 1000.
Cabe señalar que SIGNAL también puede ser un número, el valor numérico para SIGTERM es 15 . NÚMEROS DE SEÑAL
Por ejemplo, puedes hacer esto.
process.kill(1000, 15) o process.kill(1000, 'SIGTERM') -> envía una señal de terminación al ID de proceso 1000
process.kill(1000, 9) o process.kill(1000, 'SIGKILL') -> envía una señal de eliminación al proceso id 1000
Documentación sobre process.kill .
Cuando pid no existe, el proceso nodejs lanzará ESRCH .