Heim >Backend-Entwicklung >C++ >Wie kann ich feststellen, ob ein Verzeichnis unter Unix vorhanden ist?

Wie kann ich feststellen, ob ein Verzeichnis unter Unix vorhanden ist?

DDD
DDDOriginal
2024-11-06 12:22:02692Durchsuche

How to Determine if a Directory Exists in Unix?

Überprüfen der Verzeichnisexistenz unter Unix

Unter Unix ist die Feststellung der Existenz eines Verzeichnisses für verschiedene Vorgänge von entscheidender Bedeutung. Im Gegensatz zu opendir(), das nur bei einem Fehler die Nichtexistenz eines Verzeichnisses aufdeckt, gibt es Systemaufrufe, die speziell darauf ausgelegt sind, das Vorhandensein eines Verzeichnisses festzustellen.

Um diesem Bedarf gerecht zu werden, bieten POSIX-Systeme zwei Funktionen: stat () und lstat(). Beide Funktionen liefern Informationen über den angegebenen Pfadnamen, einschließlich seines Typs. Allerdings folgt stat() symbolischen Links, während lstat() dies nicht tut.

Um mit stat() zu überprüfen, ob ein Verzeichnis existiert:

#include <sys/stat.h>

struct stat sb;

if (stat(pathname, &sb) == 0 && S_ISDIR(sb.st_mode)) {
    // Directory exists
}

Das Makro S_ISDIR() bestätigt den Dateityp als Verzeichnis. Ebenso können andere Dateitypen mithilfe entsprechender S_IS*-Makros überprüft werden.

Fazit:

stat() und lstat() bieten eine bequeme und umfassende Möglichkeit, die zu ermitteln Existenz und Typ einer Datei oder eines Verzeichnisses in Unix, was eine nahtlose Abwicklung dateisystembezogener Vorgänge ermöglicht.

Das obige ist der detaillierte Inhalt vonWie kann ich feststellen, ob ein Verzeichnis unter Unix vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn