![](/img/trans.png)
[英]NodeJS: How to read stdout and stderr of a child process spawned by an explicitly spawned process?
[英]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.