Namespaces
Variants

std::experimental::filesystem:: read_symlink

From cppreference.net
ヘッダーで定義 <experimental/filesystem>
path read_symlink ( const path & p ) ;
path read_symlink ( const path & p, error_code & ec ) ;
(filesystem TS)

パス p がシンボリックリンクを参照している場合、そのシンボリックリンクのターゲットを参照する新しいパスオブジェクトを返します。

p がシンボリックリンクを参照していない場合、エラーとなります。

例外を送出しないオーバーロードは、エラー時に空のパスを返します。

目次

パラメータ

p - シンボリックリンクへのパス
ec - 非スローオーバーロードにおけるエラー報告用の出力パラメータ

戻り値

シンボリックリンクのターゲット(必ずしも存在するとは限りません)。

例外

The overload that does not take an error_code & parameter throws filesystem_error on underlying OS API errors, constructed with p as the first argument and the OS error code as the error code argument. std:: bad_alloc may be thrown if memory allocation fails. The overload taking an error_code & parameter sets it to the OS API error code if an OS API call fails, and executes ec. clear ( ) if no errors occur. This overload has
noexcept 仕様:
noexcept

#include <experimental/filesystem>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    // 典型的なLinuxシステムでは、/lib/libc.so.6はシンボリックリンクです
    fs::path p = "/lib/libc.so.6";
    if (exists(p) && is_symlink(p))
        std::cout << p << " -> " << read_symlink(p) << '\n';
    else
        std::cout << p << " does not exist or is not a symlink\n";
}

出力例:

"/lib/libc.so.6" -> "libc-2.12.so"

関連項目

引数がシンボリックリンクを参照しているかどうかをチェックする
(関数)
シンボリックリンクを作成する
(関数)
シンボリックリンクをコピーする
(関数)
ファイル属性を決定する
シンボリックリンクのターゲットをチェックしてファイル属性を決定する
(関数)