Nodejs终止产生的子进程
Posted
技术标签:
【中文标题】Nodejs终止产生的子进程【英文标题】:Nodejs Terminate Spawned Child Process 【发布时间】:2015-09-08 18:09:31 【问题描述】:我为一个 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
我的问题是,有时候java.exe会变大,跳出cmd.exe变成一个独立的进程,即使我停止服务器也无法终止。而且因为我没有 java.exe 的 pid,所以我无法用我的函数终止它。
我可以通过哪些其他方式终止进程而无需手动执行,或者获取 java.exe 而不是 cmd.exe 的 pid?
【问题讨论】:
【参考方案1】:事实证明,问题在于我创建子进程的方式。
使用 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]);
【讨论】:
以上是关于Nodejs终止产生的子进程的主要内容,如果未能解决你的问题,请参考以下文章