Nodejs终止生成的子进程

时间:2015-09-08 18:09:32

标签: node.js

我通过

启动了jar文件的子进程
var exec = require('child_process').exec;
// Start child process
var child = exec("java -jar test.jar");

我通过使用我给出的孩子的pid编写的kill函数来终止子进程

killProcess(child.pid);

该函数在pid正确时始终有效,但是,因为nodejs在cmd.exe中创建了子进程,如下图所示, 而child.pid是cmd.exe的pid而不是实际的java.exe

enter image description here

我的问题是,偶尔java.exe会变得太大并跳出cmd.exe并成为一个独立的进程,即使我停止服务器也无法终止它。因为我没有java.exe的pid,所以我无法用我的函数终止它。

如果不手动执行此过程,或者获取java.exe的pid而不是cmd.exe,还有哪些其他方法可以终止该过程?

1 个答案:

答案 0 :(得分:0)

事实证明,问题在于我如何创建子进程。

使用exec创建子进程有一个大小限制,因此,将它从exec更改为spawn可以解决问题。

// Spawn the external jar file as a child process and listen print the output
var spawn = require('child_process').spawn;
// Start child process
var child = spawn('java', ['-jar', file_name]);