|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||||||
Получение имени съемного накопителя20.12.2018, 12:01. Показов 2785. Ответов 45
Метки нет (Все метки)
Доброго дня всем! Не знал в каком разделе написать. Знаний в области Линукса мало...
Мне необходимо написать простую программу, начал на Сишарпе. Для отлова событий изменения ядра использую udev API. Вызываю сишные методы. Я вот не пойму, правильно - ли я выбрал направление с работой через udev? У меня с горем пополам получилось получить событие action (add/remove), но как получить имя я не знаю. Флешка у меня распознается как dev/sda, вторая как /dev/sdb Путь в syspath = "/sys/devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0"/ Все это дело автомонтируется в /media/usb0-usb7. Ломаю голову, как же получить имя диска? Нашел простой пример, но я так понимаю что он не даст мне имя по типу /dev/sda или /mount/usb
В общем, запутался. Прошу помощи именно в теории, как правильно сделать и какой инструмент ОС задействовать. ПС: Сделал так же вариант хардкода, когда имя внешнего накопителя константное, так как использую только 1 порт usb (/media/usb1), но вдруг с системой что станет и имя изменится...
0
|
||||||
| 20.12.2018, 12:01 | |
|
Ответы с готовыми решениями:
45
Определение буквы съемного диска(флэшки) по имени или серийному номеру (без WMIC). Простой способ Получение имени панели
|
|
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
|
|
| 20.12.2018, 12:41 | |
|
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||
| 20.12.2018, 12:46 [ТС] | ||
По идее devnode это и есть имя устройства?
0
|
||
|
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
|
|
| 20.12.2018, 12:51 | |
|
1
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
|
| 20.12.2018, 12:58 [ТС] | |
|
Я получаю имя /dev/sda и тд... Это то что нужно...
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||||||
| 21.12.2018, 13:42 [ТС] | ||||||
|
Вернусь к данному вопросу. На данный момент все работает. Но меня терзают смутные сомнения по данному примеру! Если смотреть исходник, то опрос устройств происходит в вечном цикле с задержкой
И как она выходит из бесконечного цикла?
0
|
||||||
|
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
|
|
| 21.12.2018, 14:04 | |
|
Ответы Да и никак
![]() Это же просто пример, печатая точку они показывают "все работает - вставь устройство"... Вопрос не задан, но предполагаю, что вам нужен NULL последним параметром у select(), ну или просто не нулевой таймаут.
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
|
| 21.12.2018, 14:06 [ТС] | |
|
0
|
|
|
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
|
|
| 21.12.2018, 14:11 | |
|
поллинг смениться на ожидание (вечное в случае NULL) события в течении таймаута. man select/poll/epoll
1
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||||||
| 21.12.2018, 14:40 [ТС] | ||||||
|
А если select изменить на
0
|
||||||
|
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
|
|
| 21.12.2018, 14:50 | |
|
Лучше, просто скажите, какого поведения хочется добиться в итоге
А то может надо просто блокироваться в udev_monitor_receive_device() и никакие мультиплексоры вообще не нужны...
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||
| 21.12.2018, 15:07 [ТС] | ||
|
0
|
||
|
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
|
||||||
| 21.12.2018, 15:20 | ||||||
|
Как-то так:
0
|
||||||
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
|
| 21.12.2018, 15:23 [ТС] | |
|
Ну вылетим из цикла, а запускать потом вручную ведь. Интересно, можно ли ловить именно ивент при изменении, что бы не гонять в цикле, или это только о D-bus?
0
|
|
|
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
|
|
| 21.12.2018, 15:29 | |
|
Вылетели из цикла == ошибка на сокете или мусор в данных - остается только сдохнуть.
Прочитали что-то из сокета = произошло одно из событий на которые вы подписались.
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||
| 21.12.2018, 15:38 [ТС] | ||
|
Спасибо за советы! Скажите пожалуйста, почему прут эти ошибки, когда я дергаю флешку.
0
|
||
|
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
|
|
| 21.12.2018, 15:43 | |
|
Код нужен...
0
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
|||||||||||
| 21.12.2018, 15:44 [ТС] | |||||||||||
|
Код на Шарпе написан... Если есть смысл, я скину. Это происходит при вызове
0
|
|||||||||||
|
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
|
|
| 21.12.2018, 16:01 | |
|
Походу, кто-то (сама libudev/шарп/кто-еще) ставит O_NONBLOCK на сокет. Варианты: снять флаг, вернуть poll/select
1
|
|
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||
| 21.12.2018, 17:56 [ТС] | ||
|
В общем я поковырялся и прочитал вот такое в коде библиотеки.
Подскажите еще такой момент. Я работаю через udev, что будет, если я выключу комп с флешкой. А когда система запустится имя флешки не будет видно (/dev/sda или /dev/sdb)? Добавлено через 5 минут Что вообще дает блокировка?
0
|
||
| 21.12.2018, 17:56 | |
|
Помогаю со студенческими работами здесь
20
Получение имени каталога
Получение имени окна Получение имени файла получение имени по ip из dyndns Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|