Я могу запросить, какие процессы (если таковые имеются) в настоящее время получают доступ к микрофону?

Я не думаю, что можно сделать это. Оболочки в наше время отслеживают то, как они добрались, где они, они отслеживают текущий рабочий каталог по имени, вместо того, чтобы просто полагаться на файловую систему и ОС для хранения его. Это означает встроенное cd может пойти "создают резервную копию" символьной ссылки, вместо только после ".." цепочки непосредственно.

Но когда Вы работаете ls ../foo, ls не знает, что оболочка добралась до каталога, перейдя по символьным ссылкам. ls сделает a stat() на "../нечто" ".." часть прибывает из текущего каталога, который имеет только сингл ".." запись, поскольку это - родитель. Целая вещь символьной ссылки не изменяет способ, которым каталоги имеют сингл "." и сингл ".." запись. Символьные ссылки позволяют ядру вставить дополнительный слой косвенности в пути к файлам. Когда Вы передаете "../независимо от того, что" open() или stat(), ядро просто использует текущий рабочий каталог процесса, делающего вызов для выяснения, которым называют единственный каталог "..".

10
15.06.2013, 07:47
2 ответа

Сначала определите свой файл устройств микрофона; должно быть что-то подобное /dev/snd/pcmC0D0c. Чтобы помочь Вам найти файл устройств, можно запустить тестовую запись с arecord или такой, затем сделайте lsof | grep '/dev/snd'; это перечислит все программы и их связанный файл устройств.

Затем можно посмотреть использование использования микрофона fuser /dev/snd/pcmC0D0c. Это возвратит PID программы, получающей доступ к устройству, если упомянутое устройство будет открыто.

Можно предпочесть циклично выполняться на inotifywait /dev/snd/pcmC0D0c альтернативно, для обнаружения изменений в состоянии вместо того, чтобы постоянно опросить устройство относительно состояния.

6
27.01.2020, 20:02

Поле owner_pid в procfs файл status из шоу устройства PCM, какая программа открыла его:

$ grep owner_pid /proc/asound/card*/pcm*/sub*/status
/proc/asound/card2/pcm0p/sub0/status:owner_pid   : 1803
$ ps -p 1803
  PID TTY          TIME CMD
 1803 pts/0    00:00:00 aplay
4
27.01.2020, 20:02

Теги

Похожие вопросы