2016-10-20 9 views
1

私は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"を入力しようとしましたが、プロセスには何の影響もありません。

+0

とにかく、kill信号の代わりに終了信号をPIDに送ることができます。 – oldtechaa

+0

あなたは "q \ n"を試みることができます – aergistal

+0

@oldtechaaその提案はうまくいくようですが、それを答えて、私はupvoteします。 gtkでCコールを終了させるコールバック(pid、SIGTERM)で停止ボタンを作った。ビデオはすべて、私の主な関心事だった良い形になっているようです。 – jackson80

答えて

0

qを正常に使用する代わりに、killSIGTERMを試してみてください。これはffmpegを直ちに停止するとは限りませんが、これでも正常なシャットダウンを提供します。

+0

この回答は完全に機能するようです。残念ながら、私はupvoteを表示するのに十分な評判がありません。しかし、あなたは私の問題の一つを解決しました。ありがとう! – jackson80

+0

質問に答えた場合は、緑色のチェックマークを付けて受諾できます。 – oldtechaa

関連する問題