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);
我在 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);