LINUX.ORG.RU

Определить отключение USB устройства в программе на С


0

0
Есть программа на С. Эта программа открывает файл, который (может быть) находится на USB устройстве (или на любом другом отключаемом носителе). Затем устройство отключают. Вот как опрелить, что устройства больше нет и что файл стал invalid?
anonymous
# dmesg

подключи

# dmesg

отключи

# dmesg

Neksys ★★★
()
Ответ на: комментарий от swizard
Очень просто - когда будут произведены некоторые действия - необходимо проверить статус выполнения операции - если девайс выдернут "шибко" умным человеком то драйвер (нормально написанный) будет возвращать ошибки при попытках доступа к девайсу (файлам на девайсе) - Вам нужно только проверить это (напр успешность выполнения системного вызова).
Mr_Nobody
()
Ответ на: комментарий от I3rain
Дык нет, ведь хочется не то чтобы open/read/write обломился, а чтобы корректно получить нотификацию. Типа событие, что устройство отключено или наоборот, подключено.

Например, в офтопике есть соотв. API для таких вещей. Хочется и в Linux тоже как-то это ловить.
anonymous
()
Ответ на: комментарий от anonymous
DBUS в общем похоже на то что нужно, но это какой-то примитив -- "it will simply monitor the /etc/fstab file to know what hardware is available". Хочется понять, инвалидировались ли в данный момент данные файлы или нет, а не просто, что в системе появилась/исчезла такая-то директория с примонтированной файлухой.
anonymous
()
Ответ на: комментарий от swizard
> Вызывающе неверная информация =)

с интересом посмотрю на ее опровержение. ну например тестовый сценарий:

1. монтируем USB флешку допустим в /mnt.
2. напускаем на нее нечто, генерирующее трафик. можно find /mnt если дерево большое, можно просто dd if=/dev/zero of=/mnt/test.dat
3. отключаем флешку без размонтирования файловой системы в процессе обмена.
4. радуемся, если VFS не упал в панику. допустим, на NetBSD он это отродясь делает вполне стабильно бо не рассчитан на такие "издевательства" :-/ что конечно печально.

// wbr
klalafuda ★☆☆
()
> Вот как опрелить, что устройства больше нет и что файл стал invalid?

Сделать для него stat

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