Namespaces
Variants

std::experimental::filesystem:: create_hard_link

From cppreference.net
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 has
noexcept spécification :
noexcept

Notes

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)