Namespaces
Variants

std::experimental::filesystem:: create_hard_link

From cppreference.net
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 has
noexcept Spezifikation:
noexcept

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 <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)