如何在 node.js 中杀死生成的进程
Posted
技术标签:
【中文标题】如何在 node.js 中杀死生成的进程【英文标题】:How to kill spawned process in node.js 【发布时间】:2017-07-28 11:50:33 【问题描述】:我有一个函数需要在生成一个新进程之前杀死以前的 ffmpeg 进程,但是我不确定如何执行此操作,因为如果我尝试下面的代码,我会得到 ffmpeg 未定义是可以理解的:
var ffmpeg_started = false;
function start_ffmpeg(file)
if (ffmpeg_started)
ffmpeg.kill();
var command = [
'-i', file,
'-f', 'mpegts',
'-codec:v', 'mpeg1video',
'http://server.com/'
];
const ffmpeg = spawn('ffmpeg', command);
ffmpeg_started = true;
【问题讨论】:
【参考方案1】:一个简单/简单的解决方案是将ffmpeg
声明移动到父作用域中。然后你可以取消布尔标志,只检查ffmpeg
的值来判断它是否仍在运行。例如:
var ffmpeg;
function start_ffmpeg(file)
if (ffmpeg)
ffmpeg.kill();
ffmpeg = spawn('ffmpeg', ...);
如果你需要比这更复杂的东西,你可以考虑使用队列或类似的东西来更优雅地处理 ffmpeg 的调用。
【讨论】:
ffmpeg 需要是一个常量,所以这给了我一个错误,因为我无法对常量进行赋值。 为什么它需要是一个常数? 它似乎可以使用 var 而不是 const - 我不确定为什么所有示例都使用 const。但到目前为止,它已经奏效了。我也会考虑使用队列,谢谢。以上是关于如何在 node.js 中杀死生成的进程的主要内容,如果未能解决你的问题,请参考以下文章