faccessat() - Unix,Linux 系统调用
Tutorials Point


  Unix 初学者指南
  Unix Shell 编程
  高级 Unix
  Unix 有用参考
  Unix 有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于 TP  

faccessat() - Unix,Linux 系统调用


previous next AddThis Social Bookmark Button

广告

名称

faccessat - 更改相对于目录文件描述符的文件的权限

语法

#include <unistd.h> 

int faccessat(int dirfd, const char *path, int mode ", int " flags );

描述

faccessat() 系统调用与 access(2) 的操作方式完全相同,除了本手册页中描述的区别。

如果在 path 中给出的路径名是相对路径,则它将相对于文件描述符 dirfd 所引用的目录进行解释(而不是相对于调用进程的当前工作目录,access(2) 对相对路径名就是这样做的)。

如果在 path 中给出的路径名是相对路径,并且 dirfd 是特殊值 AT_FDCWD,则 path 将相对于调用进程的当前工作目录进行解释(就像 access(2) 一样)。

如果在 path 中给出的路径名是绝对路径,则忽略 dirfd

flags 通过将以下一个或多个值进行 OR 运算来构造

代码描述
AT_EACCESS
 使用有效的用户和组 ID 执行访问检查。默认情况下,faccessat() 使用有效 ID(如 access(2))。
AT_SYMLINK_NOFOLLOW
 如果 path 是符号链接,则不要取消引用它:而是返回有关链接本身的信息。

返回值

成功时,faccessat() 返回 0。发生错误时,返回 -1,并且 errno 被设置为指示错误。

错误

access(2) 中发生的相同错误也可能发生在 faccessat() 中。以下附加错误可能发生在 faccessat() 中

标签描述
EBADF dirfd 不是有效的文件描述符。
EINVAL flags 中指定了无效的标志。
ENOTDIR path 是相对路径,并且 dirfd 是一个文件描述符,它引用的是除目录之外的文件。

备注

请参阅 openat(2) 以了解 faccessat() 的必要性。

符合标准

此系统调用是非标准的,但建议将其包含在 POSIX.1 的未来修订版中。

GLIBC 备注

AT_EACCESSAT_SYMLINK_NOFOLLOW 标志实际上是在 faccessat() 的 glibc 包装函数中实现的。如果指定了这两个标志中的任何一个,则包装函数将使用 fstatat(2) 来确定访问权限。

版本

faccessat() 在 Linux 内核 2.6.16 中添加。

参见



previous next Printer Friendly

广告


  

广告



广告