【问题标题】:child process in node is not getting the correct PID id节点中的子进程未获得正确的 PID id
【发布时间】:2014-08-07 04:09:05
【问题描述】:

当我试图生成一个批处理文件时,我没有得到正确的 PID child process。

当我试图杀死子进程的PID 时,正在运行的进程并没有停止,而是停止了另一个cmd

我不知道这是怎么回事。

在我的批处理文件中打开另一个cmd 并将目录更改为C:\AppiumForWindows-1.0.0\Appium\node_modules\appium\bin 并运行node 进程node appium

。我想在单独的 cmd 中执行 node 进程(在生成 batch 文件时,它将使用相同的脚本执行。我不需要。)这就是我使用单独的 cmd。

由于这个原因,我没有得到正确的PID 进程吗?我不知道...

var startappium = function (dev, callback) {
  var ports = {};
  var execCmd = __dirname+"//Start.bat"; 

   var args = ['1000']; 
   var start = spawn(execCmd, args);
   console.log("pid id----------------------",start.pid)  
   var pid =start.pid 
   start.stdout.on('data', function (d) {
    setTimeout(function() {
    start .kill()    // it does not kill the process
     },5000);   
   console.log(d.toString())
   return callback(null, ports); 
   });
   start.stderr.on('data', function (ta) {  
      return callback(null, ta); 
  });
  start.on('close', function (code) {  
     console.log("close: ",code)
  });
}
startappium()

Start.bat文件

@echo off
start cmd /k " call "C:\Program Files\nodejs\nodevars.bat" & pushd C:\AppiumForWindows-1.0.0\Appium\node_modules\appium\bin && node appium -p %1 --chromedriver-port %2" 
pause

在运行tasklist 时,它显示带有多个PID 的cms,我试图一个一个地杀死并在一个PID 中杀死正在运行的batch 文件进程。

PID 从子进程 id 获取不会杀死正在运行的批处理进程。 请为此提出解决方案。

【问题讨论】:

    标签: javascript node.js spawn


    【解决方案1】:

    你不能杀死一个 pid,因为它是一个整数。你想杀了spawned process

    start.kill();
    

    【讨论】:

    • 是的,我在我的代码中使用了它。我认为你没有看到我的代码。在我提到的代码中。它不会杀死正在运行的进程(正在运行批处理文件)
    • 所有控制台日志的输出是什么?您确定该函数不会多次触发吗?
    猜你喜欢
    • 2016-12-29
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2021-10-17
    • 2012-10-08
    相关资源
    最近更新 更多