std::experimental::filesystem:: create_symlink, std::experimental::filesystem:: create_directory_symlink
|
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 hasNotes
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) |