Linux — запись звука C ++, когда определенный ключ не работает, пока он не работает

В основном мне нужна программа, которая работает в Linux и записывает в .wav или .flac, когда я держу alt. До сих пор у меня есть программа (на 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

Это не работает, потому что я был слишком глуп, чтобы видеть, что программа останавливается, когда я делаю первый системный вызов, чтобы попытаться дождаться завершения arecord, чего не происходит, поскольку программа не достигает уничтожения. Нужно ли выяснить, как делать потоки? Или есть библиотека, где я мог бы обмануть и сделать record.start (); record.stop (); набор функций?

0

Решение

system() функция совсем не подходит (а может быть, даже меньше). Лучше всего звонить внешним приложениям — использовать fork()/execl() (или другие функции exec) напрямую.

Поскольку вы работаете в Linux, вам лучше всего перенаправить исходный код в любое внешнее приложение, в котором вы в данный момент вызываете system (), и выяснить, как добавить функциональность в ваш собственный код.

Кроме того, вы, вероятно, захотите иметь специальный поток для просмотра событий, чтобы начать / остановить запись.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]