关注分享主机优惠活动
国内外VPS云服务器

如何使用linux c access函数

今天主机频道就和大家分享一下如何使用Linux access函数的相关知识点。内容详实,逻辑清晰。我相信大部分人都太了解这些知识了,所以我把这篇文章分享给大家,供大家参考。希望你看完这篇文章有所收获。让我们一起来看看吧。

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

linux C访问

[1]功能

确定文件的访问权限

[2]头文件

# include & ltunistd.h & gt

[3]功能定义

int access(const char * pathname,int模式);

[4]参数描述

路径名:要检测的文件的路径名。

Mode:参数为0时,表示检查文件是否存在。如果文件存在,则返回0;如果不存在,则返回-1。此功能还可以检查其他文件属性:

06检查读写权限

04检查读取权限

02检查写权限

01检查执行权限

00检查文件是否存在。

[5]返回值

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

[6]功能描述

Access()检查现有文件是否可以读/写。

参数模式有几种组合,比如R_OK,W_OK,X_OK,F_OK。

R_OK、W_OK和X_OK用于检查文件是否有读写和执行的权限。F_OK用于判断文件是否存在。

因为access()只检查权限,不考虑文件形式和文件内容,如果一个目录被指示为“可写”,则意味着可以在该目录中创建新文件,但并不意味着该目录可以被当作文件。

比如你会发现DOS中的文件有“可执行”权限,但是用executable()执行时,就会失败。

[7]错误代码

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

要在EROFS中测试写权限的文件存在于只读文件系统中。

默认参数路径名指针超出了可访问的内存空间。

EINVAL参数模式不正确。

ENAMETOOLONG参数路径名太长。

ENOTDIR参数pathname是一个目录。

ENOMEM内核内存不足。

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

EIO I/O访问错误。

[8]补充说明

使用access()进行用户验证,所以要小心。例如,在access()之后创建open()的空文件可能会导致系统安全问题。

[9]例子

//示例1
# include & ltunistd.h & gt
int main()
{
如果(access(& quot;/etc/passwd&quot,R_OK) == 0)
printf(& quot;/etc/passwd可以被读取\ n & quot);
返回0;
}
//示例2
# include & ltstdio.h & gt
# include & ltunistd.h & gt
int file _ exists(char * filename);
int main(void)
{
printf(& quot;不存在。存在文件:% s \ n & quot,
文件存在(& quot不存在。FIL & quot) ?"是的& quot:& quot不& quot);
返回0;
}
int file _ exists(char *文件名)
{
return (access(filename,0)= = 0);
}

[10]相关函数

stat,open,chmod,chown,setuid,setgid

未经允许不得转载:主机频道 » 如何使用linux c access函数

评论 抢沙发

评论前必须登录!