std::filesystem::read_symlink
Определено в заголовочном файле <filesystem> | ||
|---|---|---|
std::filesystem::path read_symlink( const std::filesystem::path& p ); | (1) | (начиная с C++17) |
std::filesystem::path read_symlink( const std::filesystem::path& p,
std::error_code& ec );
| (2) | (начиная с C++17) |
Если путь p указывает на символическую ссылку, возвращает новый объект path, указывающий на цель этой символической ссылки.
Возникает ошибка, если p не указывает на символическую ссылку.
Перегрузка, не генерирующая исключений, при ошибке возвращает пустой объект path.
Параметры
| p | - | путь к символической ссылке |
| ec | - | выходной параметр для сообщения об ошибке в перегрузке, не генерирующей исключений |
Возвращаемое значение
Цель символической ссылки (которая не обязательно должна существовать).
Исключения
Любая перегрузка, не помеченная noexcept, может сгенерировать std::bad_alloc при сбое выделения памяти.
1) Генерирует
std::filesystem::filesystem_error при ошибках базового API ОС; исключение создаётся с p в качестве первого аргумента пути и кодом ошибки ОС в качестве аргумента кода ошибки.
2) При сбое вызова API ОС устанавливает параметр
std::error_code& в код ошибки API ОС, а при отсутствии ошибок выполняет ec.clear().Пример
#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
for (fs::path p : {"/usr/bin/gcc", "/bin/cat", "/bin/mouse"})
{
std::cout << p;
fs::exists(p) ?
fs::is_symlink(p) ?
std::cout << " -> " << fs::read_symlink(p) << '\n' :
std::cout << " exists but it is not a symlink\n" :
std::cout << " does not exist\n";
}
}
Возможный вывод:
"/usr/bin/gcc" -> "gcc-5" "/bin/cat" exists but it is not a symlink "/bin/mouse" does not exist
См. также
|
(C++17) | проверяет, указывает ли аргумент на символическую ссылку (функция) |
|
(C++17)(C++17) | создаёт символическую ссылку (функция) |
|
(C++17) | копирует символическую ссылку (функция) |
|
(C++17)(C++17) | определяет атрибуты файла определяет атрибуты файла с проверкой цели символической ссылки (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/filesystem/read_symlink