Как обнаружить, что Pendrive находится в режиме только для чтения?

Мой вопрос заключается в следующем: у меня есть программное обеспечение на C ++, работающее во встроенной системе Linux, программное обеспечение имеет функцию экспорта некоторых данных в pendrive, теперь моя ловушка, некоторые пользователи пытались использовать старый pendrive в ключе для изменения между режимами чтения / записи и только для чтения. Теперь мне нужно знать, как проверить, находится ли устройство в режиме «только для чтения», чтобы показать некоторую обратную связь с пользователем в моем приложении.
Существует ли системный вызов для проверки состояния «только для чтения» перед подключением устройства?

2

Решение

Обычный способ справиться с этим — попытаться открыть файл для записи, а затем проверить, errno == EACCES,

Однако, если вы должны проверить заранее, это

int on_readonly_fs(char const *path)
{
struct statvfs fsinfo;

while (statvfs(path, &fsinfo)) == -1)
if (errno != EINTR)
return -1;
return fsinfo.f_flag & ST_RDONLY;
}

Но это работает только после крепление устройства.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]