LINUX.ORG.RU

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


0

0

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

anonymous

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


зависит от системы. например, в BSD это определяется по kernel panic.

// wbr

klalafuda ★☆☆ ()

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

# dmesg

подключи

# dmesg

отключи

# dmesg

Neksys ★★★ ()

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

Очень просто - когда будут произведены некоторые действия - необходимо проверить статус выполнения операции - если девайс выдернут "шибко" умным человеком то драйвер (нормально написанный) будет возвращать ошибки при попытках доступа к девайсу (файлам на девайсе) - Вам нужно только проверить это (напр успешность выполнения системного вызова).

Mr_Nobody ()

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

Дык нет, ведь хочется не то чтобы open/read/write обломился, а чтобы корректно получить нотификацию. Типа событие, что устройство отключено или наоборот, подключено.

Например, в офтопике есть соотв. API для таких вещей. Хочется и в Linux тоже как-то это ловить.

anonymous ()

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

DBUS в общем похоже на то что нужно, но это какой-то примитив -- "it will simply monitor the /etc/fstab file to know what hardware is available". Хочется понять, инвалидировались ли в данный момент данные файлы или нет, а не просто, что в системе появилась/исчезла такая-то директория с примонтированной файлухой.

anonymous ()

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

> Вызывающе неверная информация =)

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

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

// wbr

klalafuda ★☆☆ ()

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

> Вот как опрелить, что устройства больше нет и что файл стал invalid?

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

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