0

基本上我需要一个在 Linux 中运行的程序,并在我按住 alt 时记录到 .wav 或 .flac。到目前为止,我有一个程序(在 C++ 中),它可以识别 alt 何时上升或下降,但我需要一种记录方法,直到我释放它。这是我到目前为止所获得的一些伪代码:

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

这不起作用,因为当我执行第一次系统调用以尝试等待记录结束时,我太愚蠢了,看不到程序停止,因为程序没有达到终止状态,所以它永远不会这样做。我需要弄清楚如何进行线程处理吗?或者是否有一个图书馆可以让我作弊并做一个记录。开始();记录.停止();功能集?

4

1 回答 1

0

system()功能根本不适合(甚至可能更少)。调用外部应用程序的最佳选择是直接使用fork()/ execl()(或其他 exec 函数)。

由于您使用的是 Linux,因此最好的选择是将源代码拉到您当前正在调用 system() 的任何外部应用程序中,并弄清楚如何将功能添加到您自己的代码中。

此外,您可能希望有一个专用线程来观看事件以开始/停止录制。

于 2013-11-08T15:20:22.637 回答