linuxcaccess函数如何使用

今天小编给大家分享一下linux c access函数如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

成都创新互联是一家集网站建设,黄骅企业网站建设,黄骅品牌网站建设,网站定制,黄骅网站建设报价,网络营销,网络优化,黄骅网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

linux c access函数的作用是确定文件的访问权限,该函数的使用语法是“int access(const char * pathname,  int mode);”,其中参数“pathname”表示需要检测的文件路径名。

linux C access

【1】作用

确定文件的访问权限

【2】头文件

#include <unistd.h>

【3】函数定义

int access(const char * pathname,  int mode);

【4】参数说明

pathname: 需要检测的文件路径名

mode: 参数为0时,表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。 这个函数还可以检查其它文件属性:

06 检查读写权限

04 检查读权限

02 检查写权限

01 检查执行权限

00 检查文件的存在性

【5】返回值

若所有欲查核的权限都通过了检查则返回0值,表示成功;只要有一权限被禁止则返回-1,表示失败。

【6】函数说明

access()会检查是否可以读/写某一已存在的文件。

参数mode有几种情况组合, R_OK,W_OK,X_OK 和F_OK。

R_OK,W_OK与X_OK分别用来检查文件是否具有读取、写入和执行的权限。F_OK则是用来判断该文件是否存在。

由于access()只作权限的核查,并不理会文件形态或文件内容,因此,如果一目录表示为“可写入”,表示可以在该目录中建立新文件等操作,而非意味此目录可以被当做文件处理。

例如,你会发现DOS的文件都具有“可执行”权限,但用execve()执行时则会失败。

【7】错误代码

EACCESS  参数pathname 所指定的文件不符合所要求测试的权限。

EROFS   欲测试写入权限的文件存在于只读文件系统内。

EFAULT  参数pathname指针超出可存取内存空间。

EINVAL  参数mode 不正确。

ENAMETOOLONG  参数pathname太长。

ENOTDIR  参数pathname为一目录。

ENOMEM  核心内存不足    

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 <stdio.h>
#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 c access函数如何使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注创新互联行业资讯频道。

当前标题:linuxcaccess函数如何使用
当前URL:https://www.cdcxhl.com/article4/poegoe.html

成都网站建设公司_创新互联,为您提供外贸建站小程序开发ChatGPT服务器托管软件开发云服务器

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作