Переносимый способ проверки прав доступа - попытаться открыть файл и проверить, удалось ли это. Если нет, и errno
(из заголовка <cerrno>
установлено значение EACCES
[да, с одним S], то у вас не было достаточных разрешений. Это должно работать на обоих Unix / Linux и Windows . Пример для stdio:
FILE *fp = fopen("results.txt", "w");
if (fp == NULL) {
if (errno == EACCES)
cerr << "Permission denied" << endl;
else
cerr << "Something went wrong: " << strerror(errno) << endl;
}
Iostreams будет работать немного по-другому. AFAIK, они не гарантируют установку errno
на обеих платформах или сообщают о более конкретных ошибках, чем просто «сбой».
Как писал Джерри Коффин, не полагайтесь на отдельные функции проверки доступа , поскольку ваша программа будет подвержена условиям гонки и пробелам в безопасности.