std::filesystem::read_symlink
std::filesystem::read_symlink (심볼릭 링크 목표 읽기)
심볼릭 링크가 가리키는 목표를 나타내는 새 경로 객체를 돌려주는 함수예요. C++17부터 있어요.
출처: cppreference
본문
<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가 심볼릭 링크를 가리키면 그 심볼릭 링크의 목표를 가리키는 새 경로 객체를 돌려줘요. p가 심볼릭 링크를 가리키지 않으면 오류예요. 예외 없는 버전은 오류 시 빈 경로를 돌려줘요.
매개변수
p— 심볼릭 링크의 경로ec— 예외 없는 버전에서 오류 보고용 출력 매개변수
반환값
심볼릭 링크의 목표(반드시 존재하지는 않을 수 있어요).
예외
noexcept로 표시되지 않은 오버로드는 메모리 할당이 실패하면 std::bad_alloc을 던질 수 있어요.
-
- OS API 오류가 있으면
p를 첫 경로 인자, OS 오류 코드를 오류 코드 인자로 삼아std::filesystem::filesystem_error를 던져요.
- OS API 오류가 있으면
-
- OS API 호출이 실패하면
ec에 OS 오류 코드를 설정하고, 오류가 없다면ec.clear()를 실행해요.
- OS API 호출이 실패하면
예제
#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
for (fs::path p : {"/usr/bin/gcc", "/bin/cat", "/bin/mouse"})
{
std::cout << p;
if (fs::exists(p))
fs::is_symlink(p) ? std::cout << " is a symlink to " << fs::read_symlink(p) << '\n'
: std::cout << " is a regular file\n";
else
std::cout << " does not exist\n";
}
}