【问题标题】:Nodejs Terminate Spawned Child ProcessNodejs终止产生的子进程
【发布时间】: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?

【问题讨论】:

    标签: node.js


    【解决方案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]);
    

    【讨论】:

      猜你喜欢
      • 2019-03-23
      • 1970-01-01
      • 2017-04-08
      • 2012-02-16
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      相关资源
      最近更新 更多