linux c access函数怎么用

发布时间 - 2023-03-27 00:00:00    点击率:
linux c access函数的作用是确定文件的访问权限,该函数的使用语法是“int access(const char * pathname,  int mode);”,其中参数“pathname”表示需要检测的文件路径名。

本教程操作环境:linux5.9.8系统、Dell G3电脑。

linux c access函数怎么用?

linux C access

【1】作用

确定文件的访问权限

【2】头文件

#include 

【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 
int main()
{
    if (access("/etc/passwd", R_OK) == 0)
        printf("/etc/passwd can be read\n");
    return 0;
}
// 范例2
#include 
#include 
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视频教程》


# linux  # access  # 宋体  # 访问权限  # 有一  # 还可以  # 则是  # 不存在  # 几种  # 不符合  # 而非  # 太长 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速搭建高效香港服务器网站?  如何在服务器上三步完成建站并提升流量?  微信小程序 wx.uploadFile无法上传解决办法  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  中山网站制作网页,中山新生登记系统登记流程?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel如何实现数据库事务?(DB Facade示例)  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Laravel如何实现模型的全局作用域?(Global Scope示例)  深圳网站制作平台,深圳市做网站好的公司有哪些?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  如何用已有域名快速搭建网站?  Android滚轮选择时间控件使用详解  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  教学论文网站制作软件有哪些,写论文用什么软件 ?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Laravel如何实现API资源集合?(Resource Collection教程)  如何在阿里云通过域名搭建网站?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  个人摄影网站制作流程,摄影爱好者都去什么网站?  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  Laravel如何为API编写文档_Laravel API文档生成与维护方法  EditPlus中的正则表达式实战(5)  Laravel安装步骤详细教程_Laravel环境搭建指南  如何自定义建站之星模板颜色并下载新样式?  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何在阿里云高效完成企业建站全流程?  如何在香港免费服务器上快速搭建网站?  如何在万网利用已有域名快速建站?  Laravel怎么在Controller之外的地方验证数据  如何选择PHP开源工具快速搭建网站?  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel如何使用Blade模板引擎?(完整语法和示例)  5种Android数据存储方式汇总  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  如何在腾讯云免费申请建站?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  jQuery validate插件功能与用法详解  Python3.6正式版新特性预览  桂林网站制作公司有哪些,桂林马拉松怎么报名?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】