Namespaces
Variants

std::filesystem:: read_symlink

From cppreference.net
Definiert im Header <filesystem>
(1) (seit C++17)
(2) (seit C++17)

Wenn der Pfad p auf einen symbolischen Link verweist, gibt ein neues Pfadobjekt zurück, das auf das Ziel dieses symbolischen Links verweist.

Es ist ein Fehler, wenn p nicht auf einen symbolischen Link verweist.

Die nicht-werfende Überladung gibt bei Fehlern einen leeren Pfad zurück.

Inhaltsverzeichnis

Parameter

p - Pfad zu einem Symlink
ec - Out-Parameter für Fehlerberichterstattung in der nicht-werfenden Überladung

Rückgabewert

Das Ziel des Symlinks (das möglicherweise nicht existieren muss).

Exceptions

Jede Überladung, die nicht als noexcept gekennzeichnet ist, kann std::bad_alloc auslösen, wenn die Speicherzuweisung fehlschlägt.

1) Wirft std::filesystem::filesystem_error bei zugrundeliegenden OS-API-Fehlern, konstruiert mit p als erstem Pfadargument und dem OS-Fehlercode als Fehlercodeargument.
2) Setzt einen std:: error_code & Parameter auf den OS-API-Fehlercode, falls ein OS-API-Aufruf fehlschlägt, und führt ec. clear ( ) aus, falls keine Fehler auftreten.

Beispiel

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
    for (fs::path p : {"/usr/bin/gcc", "/bin/cat", "/bin/mouse"})
    {
        std::cout << p;
        fs::exists(p) ?
            fs::is_symlink(p) ?
                std::cout << " -> " << fs::read_symlink(p) << '\n' :
                std::cout << " exists but it is not a symlink\n" :
            std::cout << " does not exist\n";
    }
}

Mögliche Ausgabe:

"/usr/bin/gcc" -> "gcc-5"
"/bin/cat" exists but it is not a symlink
"/bin/mouse" does not exist

Siehe auch

(C++17)
prüft, ob das Argument auf einen symbolischen Link verweist
(Funktion)
erstellt einen symbolischen Link
(Funktion)
kopiert einen symbolischen Link
(Funktion)
(C++17) (C++17)
bestimmt Dateiattribute
bestimmt Dateiattribute, überprüft das Symlink-Ziel
(Funktion)