std::filesystem:: create_hard_link
|
Défini dans l'en-tête
<filesystem>
|
||
|
void
create_hard_link
(
const
std::
filesystem
::
path
&
target,
const std:: filesystem :: path & link ) ; |
(1) | (depuis C++17) |
|
void
create_hard_link
(
const
std::
filesystem
::
path
&
target,
const
std::
filesystem
::
path
&
link,
|
(2) | (depuis C++17) |
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'erreurs dans la surcharge non-lançante |
Valeur de retour
(aucun)
Exceptions
Toute surcharge non marquée
noexcept
peut lever
std::bad_alloc
si l'allocation de mémoire échoue.
Notes
Certains systèmes d'exploitation ne prennent pas en charge les liens physiques du tout ou ne les prennent en charge que pour les fichiers réguliers.
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 <filesystem> #include <fstream> #include <iostream> namespace fs = std::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
|
(C++17)
(C++17)
|
crée un lien symbolique
(fonction) |
|
(C++17)
|
retourne le nombre de liens physiques référençant le fichier spécifique
(fonction) |