Heim >Backend-Entwicklung >C++ >Wie kann ich mithilfe von Systemaufrufen prüfen, ob unter Unix ein Verzeichnis vorhanden ist?

Wie kann ich mithilfe von Systemaufrufen prüfen, ob unter Unix ein Verzeichnis vorhanden ist?

Barbara Streisand
Barbara StreisandOriginal
2024-11-08 00:30:03303Durchsuche

How to Check if a Directory Exists in Unix Using System Calls?

Überprüfen der Verzeichnisexistenz in Unix mithilfe von Systemaufrufen

In Unix-Systemen ist die Abfrage der Existenz eines Verzeichnisses für verschiedene Dateiverwaltungsaufgaben unerlässlich. Im Gegensatz zu opendir(), das einen Fehler zurückgibt, wenn ein Verzeichnis nicht existiert, bieten andere Methoden eine genauere Verzeichnisüberprüfung.

stat() und lstat() für die Verzeichnisprüfung

POSIX-Systeme bieten zwei Funktionen, stat() und lstat(), um die Existenz und den Typ eines durch einen Pfadnamen angegebenen Objekts festzustellen. Während stat() symbolischen Links folgt, untersucht lstat() den symbolischen Link selbst.

Der folgende Codeausschnitt zeigt, wie stat() verwendet wird, um die Existenz eines Verzeichnisses zu überprüfen:

#include <sys/stat.h>

struct stat sb;

if (stat(pathname, &sb) == 0 && S_ISDIR(sb.st_mode))
{
    // ...it is a directory...
}

S_IS*-Makros zur Dateitypidentifizierung

Wenn stat() erfolgreich ist, kann S_ISDIR() verwendet werden, um festzustellen, ob es sich bei der Datei um ein Verzeichnis handelt. Andere S_IS*-Makros ermöglichen die Identifizierung verschiedener Dateitypen:

  • S_ISDIR – Verzeichnis
  • S_ISREG – Normale Datei
  • S_ISCHR – Zeichengerät
  • S_ISBLK – Gerät blockieren
  • S_ISFIFO – FIFO
  • S_ISLNK – Symbolischer Link
  • S_ISSOCK – Socket

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Systemaufrufen prüfen, ob unter Unix ein Verzeichnis 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