jackson80
jackson80

Reputation: 53

Elegant early exit from a spawned ffmpeg process in C

I have a program where I build an ffmpeg command string to capture videos with options input through a gtk3 gui. Once I have all my options selected, I spawn a process with the ffmpeg command string. And I add a child watch to tell me when the process has completed.

  // 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 );

Executing ffmpeg from a terminal using a command line, the program will give an option to input a "q" at the terminal to end the ffmpeg process early. Is there any way to send a "q" to that spawned process to elegantly end the ffmpeg? I'm fairly sure I could kill the process using the process id, but I would rather stop it using a mechanism that allows ffmpeg to gracefully exit.. This is running Centos 7, kernel 4.7.5, ffmpeg version 3.0.2. Since I can still access the terminal where the ffmpeg output is displayed, I've tried typing a "q", but it has no effect on the process.

Upvotes: 1

Views: 1464

Answers (1)

oldtechaa
oldtechaa

Reputation: 1524

You could, instead of trying to gracefully use q, try using kill and a SIGTERM. This would still offer your graceful shutdown, although it may not always stop ffmpeg immediately.

Upvotes: 2

Related Questions