std::experimental::filesystem:: create_hard_link
|
Definiert im Header
<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) | |
Erstellt einen Hardlink link mit dem 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 Hardlinks |
| ec | - | Out-Parameter für Fehlerberichterstattung in der nicht-werfenden Überladung |
Rückgabewert
(keine)
Ausnahmen
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, link as the second argument, and the OS error code as the error code argument. std:: bad_alloc 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 hasHinweise
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 <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::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"); // von der originalen Datei via überlebenden Hardlink lesen char c = std::ifstream("sandbox/b").get(); std::cout << c << '\n'; fs::remove_all("sandbox"); }
Ausgabe:
a
Siehe auch
|
erstellt eine symbolische Verknüpfung
(Funktion) |
|
|
gibt die Anzahl der harten Verknüpfungen zurück, die auf die spezifische Datei verweisen
(Funktion) |