std::experimental::filesystem:: create_symlink, std::experimental::filesystem:: create_directory_symlink
|
Определено в заголовочном файле
<experimental/filesystem>
|
||
|
void
create_symlink
(
const
path
&
target,
const
path
&
link
)
;
void create_symlink ( const path & target, const path & link, error_code & ec ) ; |
(1) | (filesystem TS) |
|
void
create_directory_symlink
(
const
path
&
target,
const
path
&
link
)
;
void create_directory_symlink ( const path & target, const path & link, error_code & ec ) ; |
(2) | (filesystem TS) |
Создает символическую ссылку link с целевым объектом, установленным в target как если бы с помощью POSIX-функции symlink() : путь target может быть недопустимым или несуществующим.
Некоторые операционные системы требуют создания символьных ссылок с указанием, что ссылка ведет на каталог. Переносимый код должен использовать (2) для создания символьных ссылок на каталоги вместо (1) , несмотря на отсутствие различий в POSIX-системах.
Содержание |
Параметры
| 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, используемая на некоторых картах памяти и флеш-накопителях.
Как и жесткая ссылка, символическая ссылка позволяет файлу иметь несколько логических имен. Наличие жесткой ссылки гарантирует существование файла, даже после удаления исходного имени. Символическая ссылка не предоставляет такой гарантии; фактически, файл с именем, указанным в аргументе target может не существовать при создании ссылки. Символическая ссылка может пересекать границы файловых систем.
Пример
#include <experimental/filesystem> #include <iostream> namespace fs = std::experimental::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'; fs::remove_all("sandbox"); }
Возможный вывод:
"sandbox/sym1"->"target" "sandbox/sym2"->"subdir"
Смотрите также
|
определяет атрибуты файла
определяет атрибуты файла, проверяя цель символической ссылки (функция) |
|
|
получает цель символической ссылки
(функция) |
|
|
создает жесткую ссылку
(функция) |