В основном мне нужна программа, которая работает в 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 (); набор функций?
system()
функция совсем не подходит (а может быть, даже меньше). Лучше всего звонить внешним приложениям — использовать fork()
/execl()
(или другие функции exec) напрямую.
Поскольку вы работаете в Linux, вам лучше всего перенаправить исходный код в любое внешнее приложение, в котором вы в данный момент вызываете system (), и выяснить, как добавить функциональность в ваш собственный код.
Кроме того, вы, вероятно, захотите иметь специальный поток для просмотра событий, чтобы начать / остановить запись.
Других решений пока нет …