访问函数检查文件的存在吗?

时间:2012-11-22 08:42:33

标签: c file

访问函数检查是否可以按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。所以它是由同一个用户创建的

4 个答案:

答案 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