std::experimental::filesystem:: create_hard_link
|
Определено в заголовочном файле
<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 ) ; |
(filesystem TS) | |
Создает жесткую ссылку link с целевым объектом, установленным в target как если бы с помощью POSIX link() : путь target должен существовать.
После создания, link и target являются двумя логическими именами, которые ссылаются на один и тот же файл (они equivalent ). Даже если исходное имя target будет удалено, файл продолжает существовать и доступен под именем link .
Содержание |
Параметры
| target | - | путь к файлу или директории для создания ссылки |
| link | - | путь новой жесткой ссылки |
| ec | - | выходной параметр для сообщения об ошибках в непорождающей исключения перегрузке |
Возвращаемое значение
(нет)
Исключения
The overload that does not take an error_code & parameter throws filesystem_error on underlying OS API errors, constructed with target as the first argument, link as the second argument, and the OS error code as the error code argument. std:: bad_alloc may be thrown if memory allocation fails. The overload taking an error_code & parameter sets it to the OS API error code if an OS API call fails, and executes ec. clear ( ) if no errors occur. This overload hasПримечания
Некоторые операционные системы не поддерживают жёсткие ссылки вообще или поддерживают их только для обычных файлов.
Некоторые файловые системы не поддерживают жёсткие ссылки независимо от операционной системы: например, файловая система 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'); // создаем обычный файл fs::create_hard_link("sandbox/a", "sandbox/b"); fs::remove("sandbox/a"); // читаем из оригинального файла через сохранившуюся жесткую ссылку char c = std::ifstream("sandbox/b").get(); std::cout << c << '\n'; fs::remove_all("sandbox"); }
Вывод:
a
Смотрите также
|
создает символическую ссылку
(функция) |
|
|
возвращает количество жестких ссылок, указывающих на конкретный файл
(функция) |