Heim > Artikel > Betrieb und Instandhaltung > So ermitteln Sie, ob eine Datei unter Linux vorhanden ist
So ermitteln Sie, ob eine Datei unter Linux vorhanden ist:
1. Funktionen der Statistikreihe
Die Statistikfunktion wird verwendet, um strukturelle Informationen zurückzugeben Dateien. Die Funktionen der Statistikreihe haben drei Situationen, die jeweils Dateinamen, Dateideskriptoren und symbolischen Linkdateien entsprechen. Die Statistikstruktur beschreibt die Dateiattribute, hauptsächlich einschließlich Dateityp, Dateigröße usw. Die detaillierte Statistikstruktur ist wie folgt:
struct stat { mode_t st_mode; // file type & mode(permissions) ino_t st_ino; // i-node number(serial number) dev_t st_dev; // device number(filesystem) dev_t st_rdev; // device number for specials files nlink_t st_nlink; // number of links uid_t st_uid; // user ID of owner gid_t st_gid; // group ID of owner off_t st_size; // size in bytes, for regular files time_t st_atime; // time of last access time_t st_mtime; // time of last modification time_t st_ctime; // time of last file status change long st_blksize; // best I/O block size long st_blocks; // number of 512-byte blocks allocated };
Über die Statistik können wir Informationen wie Dateityp und Dateigröße erhalten. Zu den Dateitypen gehören: normale Dateien, Verzeichnisdateien, Block-Spezialdateien, Zeichen-Spezialdateien, FIFO, Sockets und symbolische Links. Wenn Sie die Stat-Funktionsreihe verwenden möchten, um festzustellen, ob eine Datei oder ein Verzeichnis vorhanden ist, müssen Sie beim Ausführen der Stat-Funktion, falls die Datei vorhanden ist, weiter bestimmen, ob es sich bei der Datei um eine normale Datei oder eine Verzeichnisdatei handelt.
Die Statistikserienfunktion error gibt -1 zurück. Der Fehlercode wird in errno gespeichert:
1 existiert nicht
2. Das Verzeichnis im ENOTDIR-Pfad existiert, ist aber kein echtes Verzeichnis
3. Die von ELOOP zu öffnende Datei hat zu viele symbolische Links, die Obergrenze liegt bei 16 Symbolische Links
4. EFAULT-Parameter buf Es ist ein ungültiger Zeiger, der auf einen Speicherplatz zeigt, der nicht existieren kann
5 EACCESS wurde beim Zugriff auf die Datei abgelehnt
6. ENOMEM-Kernspeicher reicht nicht aus
Der Pfad des ENAMETOOLONG-Parameters file_name Der Name ist zu lang
2. Die Zugriffsfunktion testet die Zugriffsberechtigungen basierend auf der tatsächlichen Benutzer-ID und der tatsächlichen Gruppe. Der Funktionsprototyp ist:
#include <unistd.h> int access(const char *pathname, int mode);
Moduswert:
F_OK Testen Sie, ob die Datei vorhanden ist
R_OK Testen Sie die Leseberechtigung
W_OK Testen Sie die Schreibberechtigung
Die opendir-Funktion wird zum Öffnen eines Dateiverzeichnisses verwendet und gibt bei Erfolg einen Zeiger oder NULL zurück, wenn ein Fehler auftritt. Die Implementierung ist wie folgt:
(empfohlenes Lernen: Linux-Tutorial
)Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob eine Datei unter Linux vorhanden ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!