Использование c ++ 20 и std :: fileystem :: recursive_directory_iterator на macos, этот код:
Код: Выделить всё
for (auto& f : recursive_directory_iterator(getenv("HOME"), directory_options::skip_permission_denied)) {
// dummy
}
, который должен , согласно моему пониманию документации, пропустить каталоги, которые он не имеет разрешения на то, чтобы выяснить, столкнуться с ошибкой при попытке повторить ~/библиотека/поддержка приложения/Mobilesync/.
Однако:
:
.
Код: Выделить всё
in recursive_directory_iterator::operator++(): attempting recursion into "/Users/t/Library/Application Support/MobileSync": Operation not permitted
Я предполагаю, что это означает, что существует некоторая функция разрешения/безопасности, которую присутствует итератор, не будет пропуская, даже если бы я не пропустил skip_permission_denied - что это может быть, и как бы я мог бы чисто заставить итератор, что может привести к тому, что он может разорвать все разрешения? При столкновении с известными каталогами, такими как Mobilesync или .trash, которые вызывают эту проблему, но это было бы беспорядочным решением по сравнению с возможностью обнаружения заранее, когда каталог вызовет эту проблему.
Подробнее здесь:
https://stackoverflow.com/questions/703 ... o-be-ignor