std::experimental::filesystem::read_symlink
From cppreference.com
< cpp | experimental | fs
| ヘッダー <experimental/filesystem> で定義されています |
||
| path read_symlink( const path& p ); path read_symlink( const path& p, error_code& ec ); |
(filesystem TS) | |
パス p がシンボリックリンクを参照している場合、そのシンボリックリンクのターゲットを参照する新しいパスオブジェクトを返します。
p がシンボリックリンクを参照していない場合はエラーとなります。
例外を投げないオーバーロードは、エラー時に空のパスを返します。
目次 |
[編集] パラメータ
| p | - | シンボリックリンクへのパス |
| エラーコード | - | 例外を投げないオーバーロードでのエラー報告のための出力パラメータ |
[編集] 戻り値
シンボリックリンクのターゲット(必ずしも存在するとは限りません)。
[編集] 例外
error_code& パラメータを取らないオーバーロードは、基盤となる OS API エラーが発生した場合に filesystem_error をスローします。この例外は、最初の引数に p、エラーコード引数に OS エラーコードを指定して構築されます。std::bad_alloc は、メモリ割り当てに失敗した場合にスローされる可能性があります。error_code& パラメータを取るオーバーロードは、OS API 呼び出しが失敗した場合にそれを OS API エラーコードに設定し、エラーが発生しなかった場合は ec.clear() を実行します。このオーバーロードはnoexcept 指定:
noexcept
[編集] 例
このコードを実行
#include <experimental/filesystem> #include <iostream> namespace fs = std::experimental::filesystem; int main() { // on a typical Linux system, /lib/libc.so.6 is a symlink 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"
[編集] 関連項目
| 引数がシンボリックリンクを参照しているか確認する (関数) | |
| シンボリックリンクを作成する (関数) | |
| シンボリックリンクをコピーする (関数) | |
| ファイルの属性を決定する シンボリックリンクのターゲットを確認してファイルの属性を決定する (関数) |