У меня есть решение, хотя оно немного странное и обнажает дыру в ОС.
Во время postinst
, я:
cp $(which chrt) bin/chrt
setcap cap_sys_nice+ep bin/chrt
Затем в коде я запускаю процесс с:
bin/chrt -o -p 70 getpid()
Недостаток, который мы только что выявили, заключается в том, что любой, кто использует эту версию chrt
, может делать это без прав администратора. Поскольку я запускаю это очень контролируемую целевую среду, я согласен с этой дырой, но я бы не рекомендовал ее тем, кто не имеет контроля над своей целевой средой.
arecord -l
можно использовать для отображения списка устройств захвата.
Это можно использовать для поиска индекса, хотя это не кажется лучшим вариантом.
Например:
Предположим, я хочу сопоставить карту, которая выводит.
card 5: A4 [AIR 192 4], device 0: USB Audio [USB Audio]
CARD_INDEX="$(arecord -l | pcregrep -io1 '^card ([\d]+): A4 \[AIR 192 4\]')"