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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.