访问函数检查是否可以按how参数指定的方式访问文件。参数如何可以是标志R_OK,W_OK,X_OK或存在测试F_OK的按位OR。
如果允许访问,则返回值为0,否则返回-1。
如果文件不存在,访问权限是否也返回-1?
我想开发一个功能,我检查文件是否存在。如果以下访问函数执行了它,我必须根据标准放置什么样的参数?
if (access("file_example", R_OK | W_OK | X_OK) != -1)
BTW:我要检查的文件是否由同一个应用程序创建access()
函数的exisits。所以它是由同一个用户创建的
答案 0 :(得分:7)
这些标志将检查文件是否可执行,可写和可由进程读取,许多文件不会。你正在寻找的旗帜是F_OK。 F_OK测试文件是否存在。
我建议阅读手册页以获取访问权限。它应该记录在那里。
答案 1 :(得分:2)
根据manual page,返回的错误之一是:
ENOENT A component of pathname does not exist or is a dangling symbolic link.
此外,在第二段中明确指出:
F_OK tests for the existence of the file.
答案 2 :(得分:2)
你可以使用它。
if (access("file_example", F_OK) != -1)
int access(const char *path, int amode);
amode的值是要检查的访问权限(R_OK,W_OK,X_OK)或存在测试(F_OK)的按位包含OR。
答案 3 :(得分:1)
是的,将errno
设置为ENOENT
。