std::filesystem::create_hard_link
來自 cppreference.com
< cpp | filesystem
定義於標頭檔案 <filesystem> |
||
void create_hard_link( const std::filesystem::path& target, const std::filesystem::path& link ); |
(1) | (C++17 起) |
void create_hard_link( const std::filesystem::path& target, const std::filesystem::path& link, |
(2) | (C++17 起) |
建立一個硬連結 link,其目標設定為 target,如同 POSIX link()
:路徑名 target 必須存在。
建立後,link 和 target 是指同一檔案的兩個邏輯名稱(它們是 等價的)。即使原始名稱 target 被刪除,該檔案仍然存在並可以透過 link 訪問。
目錄 |
[編輯] 引數
target | - | 要連結到的檔案或目錄的路徑 |
link | - | 新硬連結的路徑 |
ec | - | 非丟擲過載中用於錯誤報告的出參 |
[編輯] 返回值
(無)
[編輯] 異常
任何未標記為 noexcept
的過載都可能在記憶體分配失敗時丟擲 std::bad_alloc。
1) 在底層 OS API 錯誤時丟擲 std::filesystem::filesystem_error,構造時以 target 作為第一個路徑引數,link 作為第二個路徑引數,以及 OS 錯誤碼作為錯誤碼引數。
[編輯] 注意
某些作業系統根本不支援硬連結,或僅支援常規檔案的硬連結。
某些檔案系統無論作業系統如何都不支援硬連結:例如,用於儲存卡和快閃記憶體驅動器的 FAT 檔案系統。
某些檔案系統限制每個檔案的連結數量。
通常只有超級使用者才能對目錄進行硬連結。
硬連結通常不能跨越檔案系統邊界。
特殊路徑名點(".")是其父目錄的硬連結。特殊路徑名點點("..")是其父目錄的父目錄的硬連結。
[編輯] 示例
執行此程式碼
#include <filesystem> #include <fstream> #include <iostream> namespace fs = std::filesystem; int main() { fs::create_directories("sandbox/subdir"); std::ofstream("sandbox/a").put('a'); // create regular file fs::create_hard_link("sandbox/a", "sandbox/b"); fs::remove("sandbox/a"); // read from the original file via surviving hard link char c = std::ifstream("sandbox/b").get(); std::cout << c << '\n'; fs::remove_all("sandbox"); }
輸出
a
[編輯] 參閱
(C++17)(C++17) |
建立符號連結 (函式) |
(C++17) |
返回引用特定檔案的硬連結數量 (函式) |