【问题标题】:How to kill spawned process in node.js如何在 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;
}

【问题讨论】:

    标签: node.js function logic spawn


    【解决方案1】:

    一个简单/简单的解决方案是将ffmpeg 声明移动到父作用域中。然后你可以取消布尔标志,只检查ffmpeg 的值来判断它是否仍在运行。例如:

    var ffmpeg;
    function start_ffmpeg(file) {
      if (ffmpeg)
        ffmpeg.kill();
      ffmpeg = spawn('ffmpeg', ...);
    }
    

    如果你需要比这更复杂的东西,你可以考虑使用队列或类似的东西来更优雅地处理 ffmpeg 的调用。

    【讨论】:

    • ffmpeg 需要是一个常量,所以这给了我一个错误,因为我无法对常量进行赋值。
    • 为什么它需要是一个常数?
    • 它似乎可以使用 var 而不是 const - 我不确定为什么所有示例都使用 const。但到目前为止,它已经奏效了。我也会考虑使用队列,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-04-18
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 2014-09-20
    相关资源
    最近更新 更多