c读取文件的权限

Señ*_*cis 5 c permissions

如何检查文件是否具有C中的读取权限?

caf*_*caf 9

access(2)在POSIX中使用.在标准C中,您可以做的最好是尝试打开它,fopen()看看它是否成功.

如果fopen()返回NULL,您可以尝试用来errno区分"文件不存在"(errno == ENOENT)和"权限被拒绝"(errno == EACCES)情况 - 但不幸的是这两个errno值也只是由POSIX定义.

(即使在POSIX上,在大多数情况下,最好的办法是尝试打开文件,然后查看失败的原因,因为使用access()引入了明显的竞争条件).


use*_*559 8

我是自己使用stat()的粉丝.


Ric*_*dle 7

使用access()函数:

if (access(pathname, R_OK) == 0)
{
    /* It's readable by the current user. */
}
Run Code Online (Sandbox Code Playgroud)

errno将被设置为ENOENT,如果该文件不存在,或者EACCES如果它存在,但不是当前用户访问.有关更多错误代码,请参见手册页.