名前空間
変種
操作

std::filesystem::read_symlink

From cppreference.com
 
 
 
ヘッダー <filesystem> で定義
(1) (C++17以降)
std::filesystem::path read_symlink( const std::filesystem::path& p,
                                    std::error_code& ec );
(2) (C++17以降)

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

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

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

目次

[編集] パラメータ

p - シンボリックリンクへのパス
エラーコード - 例外を投げないオーバーロードでのエラー報告のための出力パラメータ

[編集] 戻り値

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

[編集] 例外

noexcept とマークされていないオーバーロードは、メモリ割り当てが失敗した場合に std::bad_alloc をスローする可能性があります。

1) 基盤となるOS APIエラーが発生した場合、最初のパス引数としてp、エラーコード引数としてOSのエラーコードとともに構築されたstd::filesystem::filesystem_error を投げます。
2) OS API呼び出しが失敗した場合、std::error_code& パラメータにOS 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)
ファイルの属性を決定する
シンボリックリンクのターゲットを確認してファイルの属性を決定する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)