std::filesystem::read_symlink
From cppreference.com
< cpp | filesystem
| ヘッダー <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 | - | シンボリックリンクへのパス |
| エラーコード | - | 例外を投げないオーバーロードでのエラー報告のための出力パラメータ |
[編集] 戻り値
シンボリックリンクのターゲット(必ずしも存在する必要はありません)。
[編集] 例外
noexcept とマークされていないオーバーロードは、メモリ割り当てが失敗した場合に std::bad_alloc をスローする可能性があります。
1) 基盤となるOS APIエラーが発生した場合、最初のパス引数としてp、エラーコード引数としてOSのエラーコードとともに構築されたstd::filesystem::filesystem_error を投げます。
[編集] 例
このコードを実行
#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) |
シンボリックリンクを作成する (関数) |
| (C++17) |
シンボリックリンクをコピーする (関数) |
| (C++17)(C++17) |
ファイルの属性を決定する シンボリックリンクのターゲットを確認してファイルの属性を決定する (関数) |