LINUX.ORG.RU

Процесс, занимающий файл/устройство


0

1

Добрый день. Ubuntu 10.10 У меня существует устройство /dev/ttyACM0 C этим устройством работает программа program, т.е. если сделать lsof /dev/ttyACM0, то выведется именно program В какой то момент устройство перестает работать. Это случается если на него послать команду отличную от текущего протокола. Т.е. если во время работа program из другой консоли отправить echo «aaaa» > /dev/ttyACM0, то устройство перестает работать. Так вопрос в том как отловить процесс, который отсылает какой то ввод на это устройство не по протоколу. В бесконечном цикле lsof не получилось выявить процесс. Какие еще существуют варианты? Либо возможно ли весь ввод на /dev/ttyACM0 логировать где-нибудь? По такому логу я бы смог отловить проблему. Спасибо.


Может я глупость скажу, но мне представляются два варианта:

  • Создать пользователя program, выставить права на запись в устройство только для этого пользователя и запускать program от его имени.
  • Переместить устройство в другое место, подменив его именованным пайпом, и слушать пайп на предмет странностей. Программе program можно отдать новое имя устройства, чтобы к ttyACM0 обращался только тот неизвестный процесс.
Xenesz ★★★★ ()

Пускай program открывает устройство эксклюзивно.

GotF ★★★★★ ()
Ответ на: комментарий от GotF

Можете подсказать каким образом это делать? через fcntl setfl не получается почему то. Причем minicom открывает эксключивно, а через мою прогу не получается. Есть кусок кода, который открывает эксклюзивно?

Wade ()
Ответ на: комментарий от Wade

Причем minicom открывает эксключивно

Запусти minicom под strace и посмотри, какие он делает syscall.

strace -o trc -f minicom параметры_миникома

trc будет содержать трейс syscall'ов.

anonymous ()
Ответ на: комментарий от anonymous

Запустил, поставил вроде все теже параметры не работает. Есть у кого код - заблокировать все таки порт для других программ? Нужен только код открытия порта. Спасибо

Wade ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.