Namespaces
Variants

std::experimental::filesystem:: create_symlink, std::experimental::filesystem:: create_directory_symlink

From cppreference.net
Definiert im Header <experimental/filesystem>
void create_symlink ( const path & target, const path & link ) ;
void create_symlink ( const path & target, const path & link, error_code & ec ) ;
(1) (Filesystem TS)
void create_directory_symlink ( const path & target, const path & link ) ;
void create_directory_symlink ( const path & target, const path & link, error_code & ec ) ;
(2) (Filesystem TS)

Erstellt einen symbolischen Link link mit dem Ziel target wie durch POSIX symlink() : der Pfadname target kann ungültig oder nicht existierend sein.

Einige Betriebssysteme erfordern die Erstellung von Symlinks, um zu kennzeichnen, dass der Link auf ein Verzeichnis verweist. Portabler Code sollte (2) verwenden, um Verzeichnis-Symlinks zu erstellen, anstatt (1) , obwohl es auf POSIX-Systemen keinen Unterschied gibt.

Inhaltsverzeichnis

Parameter

target - Pfad, auf den der Symlink zeigen soll; muss nicht existieren
link - Pfad des neuen symbolischen Links
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 symbolische Links überhaupt nicht oder nur für reguläre Dateien.

Einige Dateisysteme unterstützen keine symbolischen Links, unabhängig vom Betriebssystem, zum Beispiel das FAT-System, das auf einigen Speicherkarten und Flash-Laufwerken verwendet wird.

Wie eine harte Verknüpfung ermöglicht eine symbolische Verknüpfung, dass eine Datei mehrere logische Namen hat. Das Vorhandensein einer harten Verknüpfung garantiert die Existenz einer Datei, selbst nachdem der ursprüngliche Name entfernt wurde. Eine symbolische Verknüpfung bietet keine solche Garantie; tatsächlich muss die durch das target Argument benannte Datei nicht existieren, wenn die Verknüpfung erstellt wird. Eine symbolische Verknüpfung kann Dateisystemgrenzen überschreiten.

Beispiel

#include <experimental/filesystem>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::create_directories("sandbox/subdir");
    fs::create_symlink("target", "sandbox/sym1");
    fs::create_directory_symlink("subdir", "sandbox/sym2");
    for (auto it = fs::directory_iterator("sandbox"); it != fs::directory_iterator(); ++it)
        if (is_symlink(it->symlink_status()))
            std::cout << *it << "->" << read_symlink(*it) << '\n';
    fs::remove_all("sandbox");
}

Mögliche Ausgabe:

"sandbox/sym1"->"target"
"sandbox/sym2"->"subdir"

Siehe auch

bestimmt Dateiattribute
bestimmt Dateiattribute, überprüft das Symlink-Ziel
(Funktion)
ermittelt das Ziel eines symbolischen Links
(Funktion)
erstellt einen Hard Link
(Funktion)