std::filesystem::create_hard_link
文件系统::创建[医]硬[医]链接
Defined in header | | |
---|---|---|
void create_hard_link( const std::filesystem::path& target, const path& std::filesystem::link void create_hard_link( const std::filesystem::path& target, const path& std::filesystem::link, std::error_code& ec | | (since C++17) |
创建硬链接link
它的目标设置为target
好像是由POSIX链接%28%29*路径名称target
一定存在。
一旦被创造,link
和target
是两个引用相同文件%28的逻辑名称,它们是equivalent
29%。即使原来的名字target
,则该文件将继续存在,并且可作为link
...
参数
target | - | path of the file or directory to link to |
---|---|---|
link | - | path of the new hard link |
ec | - | out-parameter for error reporting in the non-throwing overload |
返回值
%280%29
例外
不占用std::error_code
&
参数抛文件系统[医]误差关于基础OS API错误,使用target
作为第一个论点,link
作为第二个参数,操作系统错误代码作为错误代码参数。std::bad_alloc
如果内存分配失败,则可能引发。过载std::error_code
&
参数,如果OSAPI调用失败,则将其设置为OSAPI错误代码,并执行ec.clear()
如果没有错误发生。这个过载
noexcept
规格:
noexcept
注记
有些操作系统根本不支持硬链接,或者只支持常规文件。
有些文件系统不支持硬链接,不管操作系统如何:例如,在存储卡和闪存驱动器上使用的FAT文件系统。
一些文件系统限制每个文件的链接数。
到目录的硬链接通常仅限于超级用户。
硬链接通常不能跨越文件系统边界。
特殊路径名点%28"."
%29是指向其父目录的硬链接。特殊路径名点点".."
是指向其父目录的硬链接。
例
二次
#include <iostream>
#include <fstream>
#include <filesystem>
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
二次
另见
create_symlinkcreate_directory_symlink (C++17)(C++17) | creates a symbolic link (function) |
---|---|
hard_link_count (C++17) | returns the number of hard links referring to the specific file (function) |
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。