Javascript NodeJS-从shell脚本exec中获取进程ID

Javascript NodeJS-从shell脚本exec中获取进程ID,javascript,node.js,shell,pid,Javascript,Node.js,Shell,Pid,我有一些NodeJS代码,它使用child\u process.exec()运行shell脚本。在这个shell脚本中,我运行一个程序someProgram。我想做的是获取someProgram的PID,并将其传递回我的Javascript代码中,以便稍后我可以使用另一个child\u process.exec()调用杀死该特定进程。这可能吗 var exec = require('child_process').exec; var pid = {}; exec('. ./script.sh',

我有一些NodeJS代码,它使用
child\u process.exec()
运行shell脚本。在这个shell脚本中,我运行一个程序
someProgram
。我想做的是获取
someProgram
的PID,并将其传递回我的Javascript代码中,以便稍后我可以使用另一个
child\u process.exec()调用杀死该特定进程。这可能吗

var exec = require('child_process').exec;
var pid = {};
exec('. ./script.sh', function(err, stdout, stderr) {
  console.log(stdout);
  setTimeout(function() {
    exec('kill ' + pid, function(err, stdout, stderr) {
      console.log(stdout);
    });
  }, 6000);

});

exec('pgrep -f someProgram', function(err, stdout, stderr) {
  console.log('stdout' + stdout);
  pid = stdout;
  console.log('pid ' + pid);
});

请注意,底部的exec将并发运行。您可以在gulpfile等中使用它。

您的shell脚本是否将程序作为单独的进程打开?如果没有,您不能使用child_process.pid吗?我的shell脚本将程序作为后台进程运行。child_process.pid不就是给我shell脚本的pid,而不是其中的程序吗?是的,你是对的,这就是我想要问的。我知道,在C中,您可以使用“管道”在进程之间传递数据,也许一旦shell脚本生成单独的进程,您就可以使用管道将pid传递给JS?我还没有对node做过这样的操作,所以我不确定这样做是否可行或最优雅。我想OP是在问如何获取由子进程创建的进程的pid。var child=exec(…);pid=child.pid。。这将返回进程获得的pid。