私はgtk3 guiを通してオプションを入力してビデオをキャプチャするffmpegコマンド文字列を作成するプログラムを用意しています。すべてのオプションを選択したら、ffmpegコマンド文字列でプロセスを生成します。そして、プロセスが完了したら私に教える子時計を追加します。コマンドラインを使用して、端末からのffmpegを実行Cで生成された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」を送信する方法はありますか?私はプロセスidを使ってプロセスを終了させることはできますが、ffmpegを正常に終了させるメカニズムを使用して停止したいと考えています。 これはCentOS 7、カーネル4.7.5、ffmpegバージョン3.0.2を実行しています。 ffmpegの出力が表示されている端末にはまだアクセスできますので、 "q"を入力しようとしましたが、プロセスには何の影響もありません。
とにかく、kill信号の代わりに終了信号をPIDに送ることができます。 – oldtechaa
あなたは "q \ n"を試みることができます – aergistal
@oldtechaaその提案はうまくいくようですが、それを答えて、私はupvoteします。 gtkでCコールを終了させるコールバック(pid、SIGTERM)で停止ボタンを作った。ビデオはすべて、私の主な関心事だった良い形になっているようです。 – jackson80