nodejs 生成一个真正的进程 shell 并杀死这个进程

nodejs spawn a process in real shell and kill this process

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

我的代码是这样的:

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

... 

streamingTask.kill()

那么现在我怎样才能终止这个进程呢?

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

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

var kill = require('tree-kill');
kill(streamingTask.pid);