优雅的早期退出C中产生的ffmpeg过程

时间:2016-10-20 17:07:58

标签: c linux video ffmpeg gtk3

我有一个程序,我在其中构建一个ffmpeg命令字符串,以通过gtk3 gui输入选项来捕获视频。一旦我选择了所有选项,我就会使用ffmpeg命令字符串生成一个进程。我添加了一个儿童表,告诉我程序何时完成。

  // Spawn child process 
  ret = g_spawn_async (NULL, argin, NULL, G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, &pid1, NULL);
  if ( !ret )
  {
    g_error ("SPAWN FAILED");
    return;
  }

/* Add watch function to catch termination of the process.  This function
   * will clean any remnants of process */
  g_child_watch_add (pid1, (GChildWatchFunc)cb_child_watch, widget );

使用命令行从终端执行ffmpeg,程序将提供在终端输入“q”以提前结束ffmpeg进程的选项。 有没有办法向该衍生过程发送“q”以优雅地结束ffmpeg?我很确定我可以使用进程ID杀死进程,但我宁愿使用允许ffmpeg正常退出的机制来阻止它。 这是运行Centos 7,内核4.7.5,ffmpeg版本3.0.2。 由于我仍然可以访问显示ffmpeg输出的终端,我尝试输入“q”,但它对该过程没有影响。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用qkill,而不是尝试优雅地使用SIGTERM。这仍然会提供你的优雅关闭,虽然它可能不会立即停止ffmpeg。