Namespaces
Variants

std::filesystem:: read_symlink

From cppreference.net
Определено в заголовке <filesystem>
(1) (начиная с C++17)
(2) (начиная с C++17)

Если путь p указывает на символическую ссылку, возвращает новый объект пути, который указывает на цель этой символической ссылки.

Это ошибка, если p не указывает на символическую ссылку.

Нетранслирующая перегрузка возвращает пустой путь при ошибках.

Содержание

Параметры

p - путь к символьной ссылке
ec - выходной параметр для сообщения об ошибках в непорождающей перегрузке

Возвращаемое значение

Цель символьной ссылки (которая может не существовать).

Исключения

Любая перегрузка, не помеченная noexcept , может выбрасывать std::bad_alloc при неудачном выделении памяти.

1) Выбрасывает std::filesystem::filesystem_error при ошибках API базовой ОС, созданный с p в качестве первого аргумента пути и кодом ошибки ОС в качестве аргумента кода ошибки.
2) Устанавливает параметр std:: error_code & в код ошибки API ОС при сбое вызова 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)
определяет атрибуты файла
определяет атрибуты файла, проверяя цель символической ссылки
(функция)