std::experi...te_symlink,(3)
π NAME π
Hey bestie! π This is the std::experi...te_symlink,(3) page, and it lives in the C++ Standard Libary manual (yes, βLibaryβ β thatβs literally what the header says, and Iβm obsessed with the commitment π). The NAME section is serving exactly this:
std::experimental::filesystem::create_symlink, -std::experimental::filesystem::create_symlink,
Thatβs it. No cap, thatβs whatβs on the page. π«Ά
β¨ Synopsis β¨
Defined in header <experimental/filesystem> β hereβs the exact overload lineup, bestie:
void create_symlink( const path& target, const path& link );
void create_symlink( const path& target, const path& link, (1)
(filesystem TS)
error_code& ec );
void create_directory_symlink( const path& target, const path&
link ); (2)
(filesystem TS)
void create_directory_symlink( const path& target, const path&
link, error_code& ec );
What it does: creates a symbolic link link with its target set to target, as if by POSIX symlink(). The pathname target may be invalid or non-existing β literally allowed to be a whole ghost π».
Some operating systems require symlink creation to identify that the link is to a directory. Portable code should use (2) to create directory symlinks rather than (1), even though there is no distinction on POSIX systems. Slay for portability. π
π Parameters π
targetβ path to point the symlink to, does not have to existlinkβ path of the new symbolic linkecβ out-parameter for error reporting in the non-throwing overload
π¦ Return value π¦
(none) β nothing returned, bestie. Itβs giving βvoid but make it official.β π«Ά
π₯ Exceptions π₯
- The overload that does not take an
error_code¶meter throwsfilesystem_erroron underlying OS API errors, constructed withtargetas the first argument,linkas the second argument, and the OS error code as the error code argument.std::bad_allocmay be thrown if memory allocation fails. - The overload taking an
error_code¶meter sets it to the OS API error code if an OS API call fails, and executesec.clear()if no errors occur. This overload has anoexceptspecification, and that specification is:noexcept.
π Notes π
- Some operating systems do not support symbolic links at all or support them only for regular files.
- Some file systems do not support symbolic links regardless of the operating system, for example the FAT system used on some memory cards and flash drives.
- Like a hard link, a symbolic link allows a file to have multiple logical names. The presence of a hard link guarantees the existence of a file, even after the original name has been removed. A symbolic link provides no such assurance; in fact, the file named by the
targetargument need not exist when the link is created. A symbolic link can cross file system boundaries.
πΈ Example πΈ
Run this code, bestie:
// Run this code
#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");
}
π Possible output:
"sandbox/sym1"->"target"
"sandbox/sym2"->"subdir"
π See also π
statusβ determines file attributessymlink_statusβ determines file attributes, checking the symlink target (function)read_symlinkβ obtains the target of a symbolic link (function)create_hard_linkβ creates a hard link (function)
π Categories:
Noindexed pagesunconditionally noexcept
π Hidden categories:
Pages with unreviewed unconditional noexcept templatePages with unreviewed noexcept template
Bye bestie! πβ¨ This page is signing off with source/version http://cppreference.com and date 2024.06.10, plus the header/title tag std::experi...te_symlink,(3). Periodt. π«Άπ
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms