std::experimental::filesystem:: create_hard_link
|
Défini dans l'en-tête
<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) | |
Crée un lien physique link dont la cible est définie sur target comme par la fonction POSIX link() : le chemin target doit exister.
Une fois créés, link et target sont deux noms logiques qui font référence au même fichier (ils sont équivalents ). Même si le nom original target est supprimé, le fichier continue d'exister et reste accessible sous le nom link .
Table des matières |
Paramètres
| target | - | chemin du fichier ou répertoire à lier |
| link | - | chemin du nouveau lien physique |
| ec | - | paramètre de sortie pour le rapport d'erreur 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 texte à traduire ne contient que des balises HTML et des termes C++ (`std::bad_alloc`), qui doivent rester inchangés selon vos instructions. Aucun contenu traduisible n'est présent dans cet extrait.* 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 physiques ou ne les prennent en charge que pour les fichiers ordinaires.
Certains systèmes de fichiers ne prennent pas en charge les liens physiques, quel que soit le système d'exploitation : le système de fichiers FAT utilisé sur les cartes mémoire et les clés USB, par exemple.
Certains systèmes de fichiers limitent le nombre de liens par fichier.
La création de liens physiques vers des répertoires est généralement restreinte au superutilisateur.
Les liens physiques ne peuvent généralement pas franchir les limites des systèmes de fichiers.
Le nom de chemin spécial point ( "." ) est un lien physique vers son répertoire parent. Le nom de chemin spécial point-point ".." est un lien physique vers le répertoire qui est le parent de son parent.
Exemple
#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'); // créer un fichier régulier fs::create_hard_link("sandbox/a", "sandbox/b"); fs::remove("sandbox/a"); // lire depuis le fichier original via le lien physique survivant char c = std::ifstream("sandbox/b").get(); std::cout << c << '\n'; fs::remove_all("sandbox"); }
Sortie :
a
Voir aussi
|
crée un lien symbolique
(fonction) |
|
|
retourne le nombre de liens physiques référençant le fichier spécifique
(fonction) |