0

我在nodejs工作。我正在尝试.cmd使用 child_process spawn 和 exec 运行文件。但似乎没有一个工作。.cmd当我运行此脚本时,Spawn 成功运行了该文件spawn('cmd', ['/c', 'start start_wMBusServices_CLI.cmd'])

在此处输入图像描述

但是在使用它杀死进程process.kill(pid)时会产生以下错误。

在此处输入图像描述

spawn.kill()根本不会杀死进程。

我做了一些挖掘,发现任务管理器中缺少进程(pid = 16580)。

在此处输入图像描述

而 child_process.exec 只是创建 pid 而根本不运行.cmd

现在,我想要的是,当我单击停止按钮时终止进程。

我需要一个简单的脚本来终止这个过程。

这是我的整个代码

let exec = null;
let pId = null;

function startStop() {
  try {
    if (!pId) {
      exec = spawn('cmd', ['/c', "start start_wMBusServices_CLI.cmd"])
      
      // <-- execFile didn't work -->
      -------------------------------

      // exec = execFile(executablePath, { encoding: 'utf-8' }, function (err, stdOut, stdErr) {
      //   console.error(err);
      //   console.error(stdErr);
      // })
      pId = exec.pid
      console.log(pId);
      // if(exec.killed)
      //   pId = null

    }
    else if (pId) {
      // didn't work
      --------------
      // exec.kill()

      // generates error shown before
      -------------------------------
      process.kill(pId)
    }
  } catch (err) {
    console.error(err);
  }
  console.log(process);
}
4

0 回答 0