std::filesystem:: create_hard_link
|
Definiert im Header
<filesystem>
|
||
|
void
create_hard_link
(
const
std::
filesystem
::
path
&
target,
const std:: filesystem :: path & link ) ; |
(1) | (seit C++17) |
|
void
create_hard_link
(
const
std::
filesystem
::
path
&
target,
const
std::
filesystem
::
path
&
link,
|
(2) | (seit C++17) |
Erstellt einen Hardlink
link
mit seinem Ziel gesetzt auf
target
wie durch POSIX
link()
: der Pfadname
target
muss existieren.
Nach der Erstellung sind link und target zwei logische Namen, die auf dieselbe Datei verweisen (sie sind equivalent ). Selbst wenn der ursprüngliche Name target gelöscht wird, existiert die Datei weiterhin und ist als link zugänglich.
Inhaltsverzeichnis |
Parameter
| target | - | Pfad der Datei oder des Verzeichnisses, zu dem verlinkt werden soll |
| link | - | Pfad des neuen Hard Links |
| ec | - | Out-Parameter für Fehlerberichterstattung in der nicht-werfenden Überladung |
Rückgabewert
(keine)
Ausnahmen
Jede Überladung, die nicht als
noexcept
gekennzeichnet ist, kann
std::bad_alloc
auslösen, wenn die Speicherzuweisung fehlschlägt.
Hinweise
Einige Betriebssysteme unterstützen harte Links überhaupt nicht oder nur für reguläre Dateien.
Einige Dateisysteme unterstützen keine Hardlinks, unabhängig vom Betriebssystem: das FAT-Dateisystem, das auf Speicherkarten und Flash-Laufwerken verwendet wird, zum Beispiel.
Einige Dateisysteme begrenzen die Anzahl der Verknüpfungen pro Datei.
Das Hardlinken zu Verzeichnissen ist in der Regel dem Superuser vorbehalten.
Hardlinks können in der Regel keine Dateisystemgrenzen überschreiten.
Der spezielle Pfadname Punkt ( "." ) ist ein Hardlink zu seinem übergeordneten Verzeichnis. Der spezielle Pfadname Punkt-Punkt ".." ist ein Hardlink zu dem Verzeichnis, das das übergeordnete Verzeichnis seines übergeordneten Verzeichnisses ist.
Beispiel
#include <filesystem> #include <fstream> #include <iostream> namespace fs = std::filesystem; int main() { fs::create_directories("sandbox/subdir"); std::ofstream("sandbox/a").put('a'); // reguläre Datei erstellen fs::create_hard_link("sandbox/a", "sandbox/b"); fs::remove("sandbox/a"); // aus der originalen Datei via überlebenden Hard Link lesen char c = std::ifstream("sandbox/b").get(); std::cout << c << '\n'; fs::remove_all("sandbox"); }
Ausgabe:
a
Siehe auch
|
(C++17)
(C++17)
|
erstellt eine symbolische Verknüpfung
(Funktion) |
|
(C++17)
|
gibt die Anzahl der harten Verknüpfungen zurück, die auf die spezifische Datei verweisen
(Funktion) |