Nodejs 在真实 shell 中生成一个进程并终止该进程

Kin*_*one 0 shell spawn node.js

我有一个在nodejs 中使用spawn 创建的进程,并带有选项,shell:true因此该进程在真实的shell 中启动。因此,当我尝试终止这个进程时,streamingTask.kill()它不起作用。没有该选项shell:true一切正常。

这就是我的代码的样子:

var options = {shell:true};  
streamingTask = spawn('gst-launch-1.0',args,options);

... 

streamingTask.kill()
Run Code Online (Sandbox Code Playgroud)

那么我现在怎样才能杀死这个进程呢?

小智 6

这不起作用,因为您正在终止 shell 进程本身,而不是由 shell 生成的子进程(gst-launch-1.0在您的情况下)。

npm 上有一个名为tree-kill 的包,它提供了一个简单的单行解决方案:

var kill = require('tree-kill');
kill(streamingTask.pid);
Run Code Online (Sandbox Code Playgroud)