From cppreference.com
Defined in header
std::filesystem::pathread_symlink(conststd::filesystem::path&p); (1) (since C++17)std::filesystem::pathread_symlink(conststd::filesystem::path&p,std::error_code&ec); (2) (since C++17)If the path p refers to a symbolic link, returns a new path object which refers to the target of that symbolic link.
It is an error if p does not refer to a symbolic link.
The non-throwing overload returns an empty path on errors.
Parameters
p - path to a symlink ec - out-parameter for error reporting in the non-throwing overload Return value
The target of the symlink (which may not necessarily exist).
Exceptions
Any overload not marked noexcept may throw
if memory allocation fails.
1) Throws
std::filesystem::filesystem_error
on underlying OS API errors, constructed with p as the first path argument and the OS error code as the error code argument.
2) Sets a std::error_code& parameter to the OS API error code if an OS API call fails, and executes ec.
() if no errors occur.
Example
Run this code
#include<filesystem>#include<iostream>namespacefs=std::filesystem;intmain(){for(fs::pathp:{"/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";}}Possible output:
"/usr/bin/gcc" -> "gcc-5" "/bin/cat" exists but it is not a symlink "/bin/mouse" does not exist See also