节点中的子进程未获得正确的PID ID

时间:2014-08-07 04:09:06

标签: javascript node.js spawn

当我尝试生成批处理文件时,我得不到PID的正确child proces

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

我不知道它是怎么发生的。

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

。我希望单独node执行cmd进程(在生成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,我试图逐个杀死并在一个{{1}中杀死正在运行的batch文件进程}。

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

1 个答案:

答案 0 :(得分:0)

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

start.kill();