Здравствуйте.
Пишу свое приложение, которое занимается захватом звука с звуковых карт. Приходится делать привязку звуковой карты к PCI-шине, так как их три совершенно одинаковых и после загрузки системы карты тусуются как хотят. Мне же нужен железный порядок.
Сначала делал по этому туториалу:
http://alsa.opensrc.org/Udev#Writing_udev_rules и все было хорошо. Создал правила udev и оно работает.
Потом я подумал, зачем мне udev и на каждой клиентской машине все настраивать вручную, если я то же самое могу сделать из своей программы. Суть решения - найти каталог звуковой карточки в /sys/devices/..../card[0-9]/. Создать в этом каталоге файл "id" и прописать в него всего одну строчку (сам id карты). А потом просто обращаться к звуковой карте используя этот id. То же самое делает и udev.
Все бы хорошо, но ни программа, ни я не имеем прав на изменение/удаление.
Владелец файла - root:root. Права меняю как хочу. Поставил 755. Но при попытке отредактировать получаю "Ошибка записи. Файл существует". При попытке удалить:
sudo rm /sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card0/id
rm: невозможно удалить '/sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card0/id': Операция не позволена
Но я же вроде от рута пытаюсь удалить. И права 755. Почему?
Причем один раз (первый после загрузки компа) удалось записать в этот файл. Все последующие попытки провалились. Где искать проблему?
Помогите, пожалуйста, а то уже мозг кипит.
P.S.: Да, lsof показывает, что файл не занят.