std::filesystem:: create_symlink, std::filesystem:: create_directory_symlink
|
ヘッダーで定義
<filesystem>
|
||
|
void
create_symlink
(
const
std::
filesystem
::
path
&
target,
const std:: filesystem :: path & link ) ; |
(1) | (C++17以降) |
|
void
create_symlink
(
const
std::
filesystem
::
path
&
target,
const
std::
filesystem
::
path
&
link,
|
(2) | (C++17以降) |
|
void
create_directory_symlink
(
const
std::
filesystem
::
path
&
target,
const std:: filesystem :: path & link ) ; |
(3) | (C++17以降) |
|
void
create_directory_symlink
(
const
std::
filesystem
::
path
&
target,
const
std::
filesystem
::
path
&
link,
|
(4) | (C++17以降) |
シンボリックリンク
link
を作成し、そのターゲットを
target
に設定します。これはPOSIXの
symlink()
と同様に動作します:パス名
target
は無効または存在しない場合があります。
一部のオペレーティングシステムでは、リンクがディレクトリを指すことを識別するためにシンボリックリンクの作成が必要です。ポータブルなコードでは、POSIXシステムでは区別がないにもかかわらず、 (1,2) ではなく (3,4) を使用してディレクトリシンボリックリンクを作成すべきです。
目次 |
パラメータ
| target | - | シンボリックリンクが指すパス(存在する必要はありません) |
| link | - | 新しいシンボリックリンクのパス |
| ec | - | 例外を送出しないオーバーロードでのエラー報告用出力パラメータ |
戻り値
(なし)
例外
noexceptでマークされていないオーバーロードは、
メモリ確保に失敗した場合に
std::bad_alloc
をスローする可能性があります。
注記
一部のオペレーティングシステムでは、シンボリックリンクを全くサポートしていないか、または通常ファイルに対してのみサポートしています。
一部のファイルシステムは、オペレーティングシステムに関係なくシンボリックリンクをサポートしていません。例えば、一部のメモリカードやフラッシュドライブで使用されるFATシステムなどです。
ハードリンクと同様に、シンボリックリンクもファイルが複数の論理名を持つことを可能にします。ハードリンクの存在は、元の名前が削除された後でもファイルの存在を保証します。シンボリックリンクにはそのような保証はありません。実際、 target 引数で指定されたファイルは、リンク作成時に存在する必要はありません。シンボリックリンクはファイルシステムの境界を越えることができます。
例
#include <cassert> #include <filesystem> #include <iostream> namespace fs = std::filesystem; int main() { fs::create_directories("sandbox/subdir"); fs::create_symlink("target", "sandbox/sym1"); fs::create_directory_symlink("subdir", "sandbox/sym2"); for (auto it = fs::directory_iterator("sandbox"); it != fs::directory_iterator(); ++it) if (is_symlink(it->symlink_status())) std::cout << *it << "->" << read_symlink(*it) << '\n'; assert(std::filesystem::equivalent("sandbox/sym2", "sandbox/subdir")); fs::remove_all("sandbox"); }
出力例:
"sandbox/sym1"->"target" "sandbox/sym2"->"subdir"
関連項目
|
(C++17)
(C++17)
|
ファイル属性を決定する
シンボリックリンクのターゲットをチェックしてファイル属性を決定する (関数) |
|
(C++17)
|
シンボリックリンクのターゲットを取得する
(関数) |
|
(C++17)
|
ハードリンクを作成する
(関数) |