std::filesystem:: read_symlink
From cppreference.net
<
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 | - | シンボリックリンクへのパス |
| ec | - | 非スローオーバーロードでのエラー報告用出力パラメータ |
戻り値
シンボリックリンクのターゲット(必ずしも存在するとは限りません)。
例外
noexcept
でマークされていないオーバーロードは、
メモリ確保に失敗した場合に
std::bad_alloc
をスローする可能性があります。
1)
基盤OS APIエラーが発生した場合
std::filesystem::filesystem_error
をスローします。この例外は
p
を第一パス引数、OSエラーコードをエラーコード引数として構築されます。
2)
オペレーティングシステム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)
(C++17)
|
シンボリックリンクを作成する
(関数) |
|
(C++17)
|
シンボリックリンクをコピーする
(関数) |
|
(C++17)
(C++17)
|
ファイル属性を決定する
シンボリックリンクのターゲットをチェックしてファイル属性を決定する (関数) |