当前位置: 首页 > 知识库问答 >
问题:

从C语言中生成的ffmpeg进程中优雅的早期退出

雷锋
2023-03-14

我有一个程序,我在其中构建了一个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个答案

年文柏
2023-03-14

您可以尝试使用killsigterm,而不是优雅地使用q。这仍然可以为您提供优雅的关机,尽管它可能并不总是立即停止ffmpeg。

 类似资料:
  • 问题内容: 如何在多进程python程序中捕获+ ,并正常退出所有进程,我需要在Unix和Windows上均可使用的解决方案。我尝试了以下方法: 这是可行的,但我认为这不是正确的解决方案。 问题答案: 正确的方法来处理/用是: 在创建流程之前,请忽略该流程。这样创建的子进程继承了处理程序。 创建a之后,在父进程中还原原始处理程序。 使用和代替阻塞和。 等待结果超时,因为默认阻塞将等待忽略所有信号。

  • 相关zulip聊天 我正在试图弄清楚,在quarkus中启动应用程序时,您应该如何优雅地失败。 我尝试将其添加到应用程序启动代码中。如果我运行一个单元测试,现在就不会调用它。仅当我直接启动应用程序时才会调用它。我希望返回一个非零值,以防抛出异常。这可能是推荐的方法。我不确定 我不确定这是一个功能请求还是一个bug,或者我遗漏了什么,这是正常的行为。 编辑1:我想说清楚: 当我使用“/gradlew

  • 本文向大家介绍C语言编程中生成随机数的入门教程,包括了C语言编程中生成随机数的入门教程的使用技巧和注意事项,需要的朋友参考一下 语言产生随机数是一个常见的编程功能任务,当然这个也不难,调用两三个函数就出来了,但是你知道这些函数具体是起到怎样的作用,并且是它们是如何产生随机数的吗? 几个概念 随机数:数学上产生的都是伪随机数,真正的随机数使用物理方法产生的。 随机数种子:随机数的产生是由算术规则产生

  • 本文向大家介绍windows中使用C# 调用 C语言生成的dll,包括了windows中使用C# 调用 C语言生成的dll的使用技巧和注意事项,需要的朋友参考一下 首先建立一个C语言源文件test.c 然后下载mingw64,解压,进入到bin目录,查看是否有gcc.exe ,只要下载正确肯定是有的,可以把这个bin目录加入环境变量,就可以在任意地方运行gcc。偷懒的做法是直接把刚才做好的test

  • 问题内容: 我正在阅读出色的在线书籍http://nodebeginner.org/,并尝试了简单的代码 现在我不知道(而且我仍然不知道!)如何优雅地关闭node.js,所以我就去了。现在,每次我尝试运行时,都会收到以下错误消息。 因此,有两个问题: 1)如何正常关闭node.js? 2)如何修复我创建的混乱? 问题答案: 使用+ 优雅地退出节点进程 清理混乱取决于您的平台,但基本上,您需要找到运