繁体   English   中英

Nodejs终止生成的子进程

[英]Nodejs Terminate Spawned Child Process

我通过以下方式为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的pid(而不是cmd.exe)?

事实证明,问题出在我创建子进程的方式上。

使用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]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM