Überprüfen der Verzeichnisexistenz unter Unix: Verwendung von stat()- und lstat()-Systemaufrufen
Die Feststellung, ob ein bestimmtes Verzeichnis vorhanden ist, ist eine häufige Aufgabe in der Unix-Programmierung. Während Funktionen wie opendir() durch Fehlerbehandlung das Vorhandensein eines Verzeichnisses anzeigen können, ist dies möglicherweise nicht der ideale Ansatz, um einfach die Existenz zu überprüfen. Dieser Artikel stellt effiziente Möglichkeiten vor, diese Aufgabe mithilfe der Systemaufrufe stat() und lstat() zu erledigen.
stat() und lstat()
Die Funktion stat() und lstat()-Funktionen liefern wertvolle Informationen über die Existenz und den Typ einer Datei basierend auf ihrem Pfadnamen. Im Gegensatz zu opendir() öffnen diese Funktionen die Datei nicht, sondern sammeln Daten über ihre Attribute. Der Hauptunterschied zwischen stat() und lstat() liegt in der Art und Weise, wie sie mit symbolischen Links umgehen.
Um zu überprüfen, ob eine Datei ein Verzeichnis ist, verwendet S_ISDIR() Makro wird in Verbindung mit stat() oder lstat() verwendet. Der folgende Codeausschnitt demonstriert seine Verwendung:
#include <sys/stat.h> struct stat sb; if (stat(pathname, &sb) == 0 && S_ISDIR(sb.st_mode)) { // Directory exists and is accessible }
Zusätzliche Dateitypprüfungen
Neben Verzeichnissen können verschiedene andere Dateitypen mithilfe spezifischer S_IS*-Makros überprüft werden. Hier ist eine umfassende Liste:
Das Verständnis dieser Makros ermöglicht vielseitige Dateitypprüfungen in Ihren Unix-Programmen.
Das obige ist der detaillierte Inhalt vonWie überprüfe ich mit stat() und lstat(), ob ein Verzeichnis unter Unix existiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!