`
wsql
  • 浏览: 11714090 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Linux文件编程之【系统调用】—— access()

 
阅读更多

(1) 相关函数说明

函数原型

int access(constchar * pathname,int mode);

相关函数

stat,open,chmod,chown,setuid,setgid

表头文件

#include<unistd.h>

函数说明

①参数pathname——文件名称

②参数mode——要判断的访问权限。有几种情况组合:

R_OK ——文件可读

W_OK——文件可写

X_OK ——文件可执行

F_OK ——文件存在

有时我们需要判断文件是否可以进行某种操作(读、写等等),这时可以使用access函数。access()会检查是否可以读/写某一已存在的文件。

由于access()只作权限的核查,并不理会文件形态或文件内容,因此,如果一目录表示为“可写入”,表示可以在该目录中建立新文件等操作,而非意味此目录可以被当做文件处理。例如,你会发现DOS的文件都具有“可执行”权限,但用execve()执行时则会失败。

返回值

【当测试成功时,返回0】若所有欲查核的权限都通过了检查则返回0值,表示成功,只要有一权限被禁止则返回-1。

错误代码

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

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

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

EINVAL ——参数mode 不正确。

ENAMETOOLONG ——参数pathname太长。

ENOTDIR ——参数pathname为一目录。

ENOMEM ——核心内存不足

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

EIO I/O ——存取错误。

附加说明

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

范例

/* 判断是否允许读取/etc/passwd*/
#include<unistd.h>
int main()
{
if (access(“/etc/passwd”,R_OK) = =0)
printf(“/etc/passwd can be read\n”);
}

执行

/etc/passwd can be read


(2) 实例源码

无。


(3)调试结果

分享到:
评论

相关推荐

    UNIX高级编程 计算机科学丛书

    1.3.1文件系统 1.3.2 文件名 1.3.3路径名 1.3.4工作目录 1.3.5起始目录 1.4输入和输出 1.4.1文件描述符 1.4.2标准输入、标准输出和标准出错 1.4.3不用缓存的I/O 1.4.4标准I/O 1.5程序和进程 ...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    操作系统(内存管理)

    内存管理是计算机编程最为基本的领域之一。在很多脚本语言中,您不必担心内存是如何管理的,这并不能使得内存管理的重要性有一点点降低。对实际编程来说,理解您的内存管理器的能力与局限性至关重要。在大部分系统...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例017 Linux操作系统下启动XAMPP 32 实例018 设置MySQL数据库root用户的密码 33 实例019 第5个PHP程序 34 1.6 Dreamweaver开发工具 35 实例020 Dreamweaver中编码格式的选择 35 实例021 Dreamweaver中创建表格 36 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例017 Linux操作系统下启动XAMPP 32 实例018 设置MySQL数据库root用户的密码 33 实例019 第5个PHP程序 34 1.6 Dreamweaver开发工具 35 实例020 Dreamweaver中编码格式的选择 35 实例021 Dreamweaver中创建表格 36 ...

    若干源程序资料12.rar

    2012-06-11 21:06 3,769,694 基于LABVIEW编程环境的SQLSERVER ACCESS MYSQL 数据库的测试源代码.rar 2012-06-11 21:12 81,505 基于神经网络的文字识别系统.rar 2012-06-11 21:07 39,498 基因遗传算法.zip 2012-06-11...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...

Global site tag (gtag.js) - Google Analytics