std::experimental::filesystem:: create_symlink, std::experimental::filesystem:: create_directory_symlink
|
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 hasHinweise
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) |