std::experimental::filesystem::create_hard_link
來自 cppreference.com
< cpp | experimental | fs
定義於標頭檔案 <experimental/filesystem> |
||
void create_hard_link( const path& target, const path& link ); void create_hard_link( const path& target, const path& link, error_code& ec ); |
(檔案系統 TS) | |
建立硬連結 link,其目標設定為 target,如同透過 POSIX link():路徑名 target 必須存在。
一旦建立,link 和 target 是指同一檔案的兩個邏輯名稱(它們是 equivalent)。即使原始名稱 target 被刪除,檔案仍然存在並可以透過 link 訪問。
目錄 |
[編輯] 引數
target | - | 要連結到的檔案或目錄的路徑 |
link | - | 新硬連結的路徑 |
ec | - | 非丟擲過載中用於錯誤報告的出參 |
[編輯] 返回值
(無)
[編輯] 異常
不接受 error_code& 引數的過載在底層作業系統 API 錯誤時丟擲 filesystem_error,該錯誤使用 target 作為第一個引數,link 作為第二個引數,以及作業系統錯誤碼作為錯誤碼引數構造。std::bad_alloc 可能在記憶體分配失敗時丟擲。接受 error_code& 引數的過載在作業系統 API 呼叫失敗時將其設定為作業系統 API 錯誤碼,並在沒有錯誤發生時執行 ec.clear()。此過載具有noexcept 規範:
noexcept
[編輯] 注意
某些作業系統根本不支援硬連結,或僅支援常規檔案的硬連結。
某些檔案系統無論作業系統如何都不支援硬連結:例如,用於儲存卡和快閃記憶體驅動器的 FAT 檔案系統。
某些檔案系統限制每個檔案的連結數量。
對目錄的硬連結通常僅限於超級使用者。
硬連結通常不能跨越檔案系統邊界。
特殊路徑名點 (".") 是其父目錄的硬連結。特殊路徑名點點 ("..") 是其父目錄的父目錄的硬連結。
[編輯] 示例
執行此程式碼
#include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::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
[編輯] 另請參閱
建立符號連結 (函式) | |
返回引用特定檔案的硬連結數量 (函式) |