Maison  >  Article  >  Opération et maintenance  >  Comment utiliser la fonction d'accès Linux C

Comment utiliser la fonction d'accès Linux C

藏色散人
藏色散人original
2023-03-27 10:46:491583parcourir

La fonction de la fonction Linux c access est de déterminer l'autorisation d'accès au fichier. La syntaxe de cette fonction est "int access(const char * pathname, int mode);", où le paramètre "pathname" représente le chemin du fichier. nom qui doit être détecté.

Comment utiliser la fonction d'accès Linux C

L'environnement d'exploitation de ce tutoriel : système linux5.9.8, ordinateur Dell G3.

Comment utiliser la fonction d'accès Linux C ? Accès à Linux C

#include <unistd.h>

【4】Description du paramètre

Nom du chemin : Le nom du chemin du fichier qui doit être détecté

Mode : Lorsque le paramètre est 0, cela signifie vérifier l'existence du fichier si le fichier existe. , renvoie 0, s'il n'existe pas, renvoie -1. Cette fonction peut également vérifier d'autres attributs de fichier :

 06 Vérifier l'autorisation de lecture et d'écriture 04 Vérifier l'autorisation de lecture

 02 Vérifier l'autorisation d'écriture

 01 Vérifier l'autorisation d'exécution

 00 Vérifier l'existence du fichier

【5】Valeur de retour

Si toutes les autorisations à vérifier ont réussi la vérification, une valeur de 0 sera renvoyée, indiquant le succès tant qu'une ; l'autorisation est interdite, une valeur de -1 sera renvoyée, indiquant un échec.

【6】Description de la fonction

Access() vérifiera si un fichier existant peut être lu/écrit.

  Il existe plusieurs combinaisons de mode paramètre, R_OK, W_OK, X_OK et F_OK.   R_OK, W_OK et X_OK sont utilisés pour vérifier si le fichier dispose respectivement des autorisations de lecture, d'écriture et d'exécution. F_OK est utilisé pour déterminer si le fichier existe.

Puisque access() vérifie uniquement les autorisations et ne fait pas attention à la forme ou au contenu du fichier, donc, si un répertoire est indiqué comme "inscriptible", cela signifie que de nouveaux fichiers et d'autres opérations peuvent être créés dans le répertoire , not Cela signifie que ce répertoire peut être traité comme un fichier. Par exemple, vous constaterez que les fichiers DOS ont tous des autorisations "exécutables", mais ils échoueront lorsqu'ils seront exécutés avec execve().

【7】Code d'erreur

  EACCESS Le fichier spécifié par le paramètre pathname ne répond pas aux autorisations requises pour le test.

 EROFS Le fichier à tester pour les autorisations en écriture existe dans un système de fichiers en lecture seule.

  EFAULT Le pointeur du chemin du paramètre dépasse l'espace mémoire accessible.

 Le mode paramètre EINVAL est incorrect.

 ENAMETOOLONG Le chemin du paramètre est trop long.   ENOTDIR Le paramètre pathname est un répertoire.

 ENOMEM Mémoire centrale insuffisante

  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);
}

【10】相关函数

stat,open,chmod,chown,setuid,setgid

推荐学习:《linux视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:qu'est-ce que Linux NginxArticle suivant:qu'est-ce que Linux Nginx