Heim >Backend-Entwicklung >C++ >Wie kann ich mithilfe von Systemaufrufen prüfen, ob unter Unix ein Verzeichnis vorhanden ist?
Ü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:
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!