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


  Unix入门
  Unix Shell编程
  高级Unix
  Unix有用参考
  Unix有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于TP  

unlinkat() - Unix,Linux系统调用


previous next AddThis Social Bookmark Button

广告

名称

unlinkat - 删除相对于目录文件描述符的目录条目

概要

#include <fcntl.h> 

int unlinkat(int dirfd, const char *pathname, int flags);

描述

unlinkat() 系统调用与 unlink(2) 或 rmdir(2) 的操作方式完全相同(取决于flags是否包含AT_REMOVEDIR标志),但本手册页中描述的差异除外。

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

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

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

flags是一个位掩码,可以指定为0,也可以通过按位或运算符将控制unlinkat()操作的标志值组合在一起。目前只定义了一个这样的标志。

标签描述
AT_REMOVEDIR 默认情况下,unlinkat() 执行等效于对pathname执行unlink(2) 的操作。如果指定了AT_REMOVEDIR标志,则执行等效于对pathname执行rmdir(2) 的操作。

返回值

成功时,unlinkat() 返回0。发生错误时,返回-1,并设置errno以指示错误。

错误

unlink(2) 和 rmdir(2) 中发生的相同错误也可能发生在unlinkat() 中。以下附加错误可能发生在unlinkat() 中:

标签描述
EBADF dirfd不是有效的文件描述符。
EINVAL flags中指定了无效的标志值。
ENOTDIR pathname是相对路径,而dirfd是指向非目录文件的描述符。

备注

请参阅openat(2) 以了解unlinkat()的需求。

符合标准

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

版本

unlinkat() 在内核 2.6.16 中添加到 Linux。

参见



previous next Printer Friendly

广告


  

广告



广告