5

access 函数检查文件是否可以通过 how 参数指定的方式被访问。how 参数可以是标志 R_OK、W_OK、X_OK 或存在性测试 F_OK 的按位或。

如果允许访问,则返回值为 0,否则返回 -1。

如果文件不存在,访问是否也返回-1?

我想开发一个检查文件是否存在的功能。如果下面的访问函数做到了,我必须按照标准提出什么样的论点?

if (access("file_example", R_OK | W_OK | X_OK) != -1)

顺便说一句:我要检查access()函数是否存在的文件是由同一个应用程序创建的。所以它是由同一个用户创建的

4

4 回答 4

10

这些标志将检查文件是否可以被进程执行、可写和可读,很多文件不会。您要查找的标志是 F_OK。F_OK 测试文件是否存在,仅此而已。

我建议阅读手册页以进行访问。它应该在那里记录。

于 2012-11-22T08:47:07.580 回答
2

是的,errno设置为ENOENT.

于 2012-11-22T08:47:56.807 回答
2

根据手册页,返回的错误之一是:

 ENOENT A component of pathname does not exist or is a dangling symbolic link.

此外,在第二段中,它明确指出:

 F_OK tests for the existence of the file.
于 2012-11-22T08:48:30.270 回答
2

你可以使用它。

if (access("file_example", F_OK) != -1)

int access(const char *path, int amode);

amode 的值是要检查的访问权限(R_OK、W_OK、X_OK)或存在性测试(F_OK)的按位或。

于 2012-11-22T08:50:04.483 回答