Namespaces
Variants

std::experimental::filesystem:: create_symlink, std::experimental::filesystem:: create_directory_symlink

From cppreference.net
Défini dans l'en-tête <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)

Crée un lien symbolique link dont la cible est définie sur target comme le ferait la fonction POSIX symlink() : le chemin target peut être invalide ou inexistant.

Certains systèmes d'exploitation exigent la création de liens symboliques pour identifier que le lien pointe vers un répertoire. Le code portable devrait utiliser (2) pour créer des liens symboliques de répertoire plutôt que (1) , même s'il n'y a pas de distinction sur les systèmes POSIX.

Table des matières

Paramètres

target - chemin vers lequel pointer le lien symbolique, n'a pas besoin d'exister
link - chemin du nouveau lien symbolique
ec - paramètre de sortie pour le rapport d'erreurs dans la surcharge non-lancante

Valeur de retour

(aucun)

Exceptions

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, lien as the second argument, and the OS error code as the error code argument. std:: bad_alloc **Note:** Le code HTML reste inchangé car : - Les balises HTML et attributs ne doivent pas être traduits - Le texte contenu dans cette structure est un terme C++ spécifique (`std::bad_alloc`) qui ne doit pas être traduit - La mise en forme originale est préservée 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
noexcept spécification :
noexcept

Notes

Certains systèmes d'exploitation ne prennent pas du tout en charge les liens symboliques ou ne les prennent en charge que pour les fichiers réguliers.

Certains systèmes de fichiers ne prennent pas en charge les liens symboliques, quel que soit le système d'exploitation, par exemple le système FAT utilisé sur certaines cartes mémoire et clés USB.

Comme un lien physique, un lien symbolique permet à un fichier d'avoir plusieurs noms logiques. La présence d'un lien physique garantit l'existence d'un fichier, même après que le nom original a été supprimé. Un lien symbolique n'offre aucune telle assurance ; en fait, le fichier désigné par l'argument target n'a pas besoin d'exister lors de la création du lien. Un lien symbolique peut traverser les limites des systèmes de fichiers.

Exemple

#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");
}

Sortie possible :

"sandbox/sym1"->"target"
"sandbox/sym2"->"subdir"

Voir aussi

détermine les attributs du fichier
détermine les attributs du fichier, en vérifiant la cible du lien symbolique
(fonction)
obtient la cible d'un lien symbolique
(fonction)
crée un lien physique
(fonction)