Мой вопрос заключается в следующем: у меня есть программное обеспечение на C ++, работающее во встроенной системе Linux, программное обеспечение имеет функцию экспорта некоторых данных в pendrive, теперь моя ловушка, некоторые пользователи пытались использовать старый pendrive в ключе для изменения между режимами чтения / записи и только для чтения. Теперь мне нужно знать, как проверить, находится ли устройство в режиме «только для чтения», чтобы показать некоторую обратную связь с пользователем в моем приложении.
Существует ли системный вызов для проверки состояния «только для чтения» перед подключением устройства?
Обычный способ справиться с этим — попытаться открыть файл для записи, а затем проверить, 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;
}
Но это работает только после крепление устройства.
Других решений пока нет …