0

基本的に、Linux で実行され、alt キーを押したときに .wav または .flac に記録するプログラムが必要です。これまでのところ、alt が上か下かを認識するプログラム (C++) がありますが、離すまで記録する方法が必要です。ここに私がこれまでに得たもののいくつかの擬似コードがあります:

while 1:
    if altChanged:
        if altIsDown:
            //Call system(arecord OPTIONS > /tmp/blah.wav) to record audio.
        end
        else
            //Get PID
            //Use system(kill PID) to fake Ctrl+C and stop recording
        end
    end
end

これが機能しないのは、私が愚かすぎて、最初のシステム コールを実行して arecord が終了するのを待つときにプログラムが停止することを確認できなかったからです。スレッド化の方法を理解する必要がありますか? または、私がチートして record.start(); を実行できるライブラリがありますか? record.stop(); 関数のセット?

4

1 に答える 1

0

このsystem()関数は、あまり適切ではありません (それよりも少ない場合もあります)。外部アプリケーションを呼び出す最善の方法は、fork()/ execl()(または他の exec 関数) を直接使用することです。

Linux を使用しているため、現在 system() を呼び出している外部アプリケーションにソースをプルし、独自のコードに機能を追加する方法を理解することが最善の策です。

さらに、イベントを監視して記録を開始/停止するための専用スレッドが必要になる場合があります。

于 2013-11-08T15:20:22.637 に答える