Существует ли переносимый (std :: filesystem) метод тестирования, если файл «заблокирован» или имеет разрешения «только для чтения»?Например, MacOS Finder имеет настройку «Заблокировано», которая ОТЛИЧНА от стандартных «разрешений» POSIX.
Мне нужно проверить, можно ли удалить файл, ДО ТОГО, как я пытаюсь выполнить операцию удаления.В идеале, я бы хотел не открывать файл для чтения / записи в качестве теста.
Это происходит во время процесса SAVE / RENAME, и (по крайней мере, в прошлых файловых системах MacOS) ОС вызывает «exchange»два файла работали, даже если файл был «заблокирован» в Finder.Из-за сложности, связанной с тем, как файлы сохраняются и как «сохраняются» ПРЕДЫДУЩИЕ версии, просто лучше знать заранее, чтобы избежать этой операции.
ДОПОЛНИТЕЛЬНОЕ ПРИМЕЧАНИЕ: Открытие потока как R /W (std :: ios :: out | std :: ios :: in) для заблокированного файла с разрешениями «Чтение и запись» завершится ошибкой с errno = 1 (операция не разрешена).Если файл только для чтения, но не заблокирован, произойдет сбой с ошибкой 13 (разрешение запрещено).
Здесь обсуждается особый подход MacOS (Какао) к проверке бита блокировки:
Как проверить, заблокирован ли файл в Какао?