node.js - home - ¿Por qué no puedo matar el proceso de mi hijo en nodejs en Windows?
nodejs pdf español (4)
exec = require(''child_process'').exec;
child = exec(''node child.js'');
child.stdout.pipe(process.stdout);
child.kill(''SIGKILL'');
function wait() {
setTimeout(wait, 1000);
child.kill(''SIGKILL'');
}
wait();
El código anterior no funciona. El niño comienza y continuará escribiendo la salida indefinidamente. No puedo entender cómo matar este proceso hijo. Estoy ejecutando el nodo v0.11.9 en Windows 7. Sé que Windows no usa señales POSIX, pero al enviarlo ''WM_QUIT'' produce una excepción. ¿Es mi mejor solución configurar un protocolo de evento en stdin?
Si desea poder matar procesos secundarios a través de SIGKILL
, use spawn
lugar, ya que spawn
creará un proceso hijo (en lugar de un nuevo shell como exec
:
var exec = require(''child_process'').spawn;
Alternativamente, puede pasar el parámetro de timeout
a exec
, lo que matará el proceso después de eso, muchos milisegundos.
child = exec(''node child.js'', { timeout: 1000 });
Esto todavía no funciona para mí con la respuesta aceptada actual. Un trabajo en Windows que puede utilizar es recurrir al programa Taskkill de Windows para matar el proceso secundario por usted. No es tan agradable, pero funciona. Cuando engendras al hijo, obtienes un ProcessID (pid) almacenado en el objeto secundario devuelto durante el desove, puedes utilizarlo con taskkill para matar el proceso.
var spawn = require(''child_process'').spawn;
spawn("taskkill", ["/pid", child.pid, ''/f'', ''/t'']);
revisa este código que funcionó para mí.
var killer = require(''child_process''); killer=exec(''taskkill /F /pid ''+child.pid);
Aquí el asesino es una variable y el niño es el proceso de su hijo. cuando creas un proceso hijo tiene muchos atributos asociados y pid es uno de ellos. para obtener más detalles sobre los atributos y la función del proceso hijo, consulte este proceso secundario node.js.
Este programa es para matar el proceso hijo en el entorno de Windows.
Tuve que usar el siguiente paquete para matar mi proceso hijo:
https://www.npmjs.com/package/tree-kill
El comando regular .kill no funcionaría para mí en un pi raspberry.