So verwenden Sie die Linux-C-Zugriffsfunktion

藏色散人
Freigeben: 2023-03-27 10:46:49
Original
1652 Leute haben es durchsucht

Die Funktion der Linux-C-Zugriffsfunktion besteht darin, die Zugriffsberechtigung der Datei zu bestimmen. Die Syntax dieser Funktion lautet „int access(const char * pathname, int mode);“, wobei der Parameter „pathname“ den Dateipfad darstellt Name, der erkannt werden muss.

So verwenden Sie die Linux-C-Zugriffsfunktion

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.

Wie verwende ich die Linux-C-Zugriffsfunktion?

Linux C-Zugriff

【1】Funktion

Bestimmen der Dateizugriffsberechtigung

【2】Header. Datei

#include <unistd.h>
Nach dem Login kopieren

【3】Funktion Definition

int access(const char * pathname,  int mode);
Nach dem Login kopieren

【4】Parameterbeschreibung

Pfadname: Der Pfadname der Datei, die erkannt werden muss

Modus: Wenn der Parameter 0 ist, bedeutet dies, dass die Existenz der Datei überprüft wird , gib 0 zurück, wenn es nicht existiert, gib -1 zurück. Diese Funktion kann auch andere Dateiattribute prüfen:

 06 Lese- und Schreibberechtigung prüfen

 04 Leseberechtigung prüfen

 02 Schreibberechtigung prüfen

 01 Ausführungsberechtigung prüfen

 00 Überprüfen Sie die Existenz der Datei

【5】Rückgabewert

Wenn alle zu prüfenden Berechtigungen die Prüfung bestanden haben, wird ein Wert von 0 zurückgegeben, was den Erfolg anzeigt; Die Berechtigung ist verboten. Der Wert -1 wird zurückgegeben, was darauf hinweist, dass ein Fehler vorliegt.

【6】Funktionsbeschreibung

Access() prüft, ob eine vorhandene Datei gelesen/geschrieben werden kann.

  Es gibt mehrere Kombinationen des Parametermodus R_OK, W_OK, X_OK und F_OK.

  R_OK, W_OK und X_OK werden verwendet, um zu prüfen, ob die Datei jeweils über Lese-, Schreib- und Ausführungsberechtigungen verfügt. Mit F_OK wird ermittelt, ob die Datei vorhanden ist.

Da access() nur Berechtigungen prüft und nicht auf die Dateiform oder den Dateiinhalt achtet, bedeutet die Angabe eines Verzeichnisses als „beschreibbar“, dass Vorgänge wie das Erstellen neuer Dateien im erstellt werden können Verzeichnis, nicht Dies bedeutet, dass dieses Verzeichnis als Datei behandelt werden kann.

Zum Beispiel werden Sie feststellen, dass DOS-Dateien alle über „ausführbare“ Berechtigungen verfügen, sie jedoch fehlschlagen, wenn sie mit execve() ausgeführt werden.

【7】Fehlercode

  EACCESS Die durch den Parameter Pfadname angegebene Datei erfüllt nicht die für den Test erforderlichen Berechtigungen.

 EROFS Die auf Schreibberechtigungen zu prüfende Datei liegt in einem schreibgeschützten Dateisystem vor.

  EFAULT Der Parameterpfadnamenzeiger überschreitet den zugänglichen Speicherplatz.

 EINVAL-Parametermodus ist falsch.

 ENAMETOOLONG Der Parameterpfadname ist zu lang.

  ENOTDIR Der Parameter Pfadname ist ein Verzeichnis.

 ENOMEM Unzureichender Kernspeicher

  ELOOP 参数pathname有过多符号连接问题。

  EIO I/O 存取错误。

【8】附加说明

使用access()作用户认证方面的判断要特别小心,例如在access()后再做open()的空文件可能会造成系统安全上的问题。

【9】范例

// 范例1
#include <unistd.h>
int main()
{
    if (access("/etc/passwd", R_OK) == 0)
        printf("/etc/passwd can be read\n");
    return 0;
}
// 范例2
#include 
#include <unistd.h>
int file_exists(char *filename);
int main(void)
{
    printf("Does NOTEXIST.FIL exist: %s\n",
    file_exists("NOTEXISTS.FIL") ? "YES" : "NO");
    return 0;
}
int file_exists(char *filename)
{
    return (access(filename, 0) == 0);
}
Nach dem Login kopieren

【10】相关函数

stat,open,chmod,chown,setuid,setgid

推荐学习:《linux视频教程

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Linux-C-Zugriffsfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage