The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как получить эксключивный доступ к ttySx"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как получить эксключивный доступ к ttySx" 
Сообщение от VArcom Искать по авторуВ закладки(ok) on 07-Апр-05, 18:55  (MSK)
При открытии порта /dev/ttyS0 (int fd = open("/dev/ttyS0", O_RDWR | O_NONBLOCK | O_NOCTTY)) он остается доступен другим процессам. Т.е. два(!) процесса могут одновременно писать в него, данные приходят первому открывшему. Самое главное, что все это работает без малейших конфликтов!
Пробовал залочить порт как файл: от fcntl() и flock() толку ноль. lockf() немного лучше - второму процессу залочить порт уже не разрешают, но писать туда он может!
Что делать?
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Как получить эксключивный доступ к ttySx" 
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 07-Апр-05, 19:41  (MSK)
>При открытии порта /dev/ttyS0 (int fd = open("/dev/ttyS0", O_RDWR | O_NONBLOCK |
>O_NOCTTY)) он остается доступен другим процессам. Т.е. два(!) процесса могут одновременно
>писать в него, данные приходят первому открывшему. Самое главное, что все
>это работает без малейших конфликтов!
>Пробовал залочить порт как файл: от fcntl() и flock() толку ноль. lockf()
>немного лучше - второму процессу залочить порт уже не разрешают, но
>писать туда он может!
>Что делать?

1) Не запускать 2 процесса, это легко сделать путем проверки запущеных процессов.

1.1) Если второй процесс не твой, а левый какой-то - проверяй целостность данных.

1.2) Если левый процесс первый.. ага! Тогда проверь, не пишет ли кто в тот порт, если пишет - выводи сообщение юзверю и заканцивай с этим делом -)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Как получить эксключивный доступ к ttySx" 
Сообщение от VArcom Искать по авторуВ закладки(??) on 09-Апр-05, 20:58  (MSK)
>1) Не запускать 2 процесса, это легко сделать путем проверки запущеных процессов.
От своих процессов я локами защищаюсь. Неплохо получается.

>1.1) Если второй процесс не твой, а левый какой-то - проверяй целостность данных.
В принципе, по протоколу внешние воздействия пофиг, со второй, третьей попытки что надо прокачается. Однако ПО делается для тестирования, все ошибки регистрируются, а припысавать RS-су чужие баги не хотелось бы.

>1.2) Если левый процесс первый.. ага! Тогда проверь, не пишет ли кто
>в тот порт, если пишет - выводи сообщение юзверю и заканцивай
>с этим делом -)
Извинясь за ламерский вопрос: а как проверить, что кто-то пишет в порт?


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Как получить эксключивный доступ к ttySx" 
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 10-Апр-05, 17:25  (MSK)

>>1.2) Если левый процесс первый.. ага! Тогда проверь, не пишет ли кто
>>в тот порт, если пишет - выводи сообщение юзверю и заканцивай
>>с этим делом -)
>Извинясь за ламерский вопрос: а как проверить, что кто-то пишет в порт?
>

Видел утилиту, которая показывает какой процесс какой файл юзает (уж не помню как называется). Так вот можно посмотреть, не юзает ли она /dev/..
что там у тебя за устройство)))
Как это сделать програмно - не знаю.. разбирайся)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру