CPP предоставляет способ выяснить, какая из разрешений файловой системы применяется? - PullRequest
1 голос
/ 23 января 2020

(Это задано как конкретный c запрос относительно более новых стандартов, таких как C ++ 17)

заголовки файловой системы теперь предоставляют способ получить разрешения для пути, отформатированного в стандарте 3. Пермь (владелец, группа, другое).

Как определить, какое из них является соответствующим разрешением? (исполняющая программа - владелец, член группы с правами доступа или член ни того, ни другого, и, следовательно, «другой»)

Я ищу собственный кроссплатформенный способ сделать это, если это пока невозможно, дайте мне знать. Намерение состоит в том, чтобы избежать выполнения этой обязанности вручную для явных команд unix или windows библиотечных функций в моем собственном коде, если я могу избежать этого.

1 Ответ

0 голосов
/ 24 января 2020

std::filesystem::status возвращает состояние файла и разрешения, заданные stat, но не предоставляет информацию о пользователе и группе, поэтому невозможно узнать, какие биты имеют отношение к текущий процесс.

Суть в том, что стандартная библиотека предназначена для обеспечения переносимого поведения на различных целевых платформах (Windows, Linux, Ma c, ...), и это определенно не тривиально, чтобы сделать это для пользователей и групп. Как отметил @Davis Herring в комментариях, даже права доступа к файлам едва ли переносимы.

Стандартная библиотека основана на boost:filesystem, для которой у нас та же проблема .

...