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


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

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于 TP  

unlink() - Unix,Linux 系统调用


previous next AddThis Social Bookmark Button

广告

名称

unlink - 删除名称,并可能删除其引用的文件

语法

#include <unistd.h> 

int unlink(const char *pathname);

描述

unlink() 从文件系统中删除一个名称。如果该名称是文件的最后一个链接,并且没有进程打开该文件,则该文件将被删除,并且其使用的空间将可供重用。

如果该名称是文件的最后一个链接,但任何进程仍然打开了该文件,则该文件将继续存在,直到引用它的最后一个文件描述符关闭。

如果该名称引用符号链接,则该链接将被删除。如果该名称引用套接字、FIFO 或设备,则将删除其名称,但已打开该对象的进程可能会继续使用它。

返回值

成功时,返回零。发生错误时,返回 -1,并且 errno 被相应地设置。

错误

标签描述
EACCES 进程的有效 UID 不允许写入包含 pathname 的目录,或者 pathname 中的一个或多个目录不允许搜索权限。(另请参阅 path_resolution(2)。)
EBUSY(Linux 上没有)无法解除链接文件 pathname,因为它正在被系统或另一个进程使用,并且实现认为这是一个错误。
EFAULT pathname 指向您可访问的地址空间之外。
EIO 发生 I/O 错误。
EISDIR pathname 指向一个目录。(这是 Linux 自 2.1.132 以来返回的非 POSIX 值。)
ELOOP 在转换 pathname 时遇到太多符号链接。
ENAMETOOLONG pathname 太长。
ENOENT pathname 中的一个组件不存在或是一个悬挂的符号链接,或者 pathname 为空。
ENOMEM 内核内存不足。
ENOTDIR pathname 中用作目录的一个组件实际上不是目录。
EPERM 系统不允许解除链接目录,或者解除链接目录需要当前进程不具备的特权。(这是 POSIX 规定的错误返回;如上所述,Linux 在此情况下返回 EISDIR。)
EPERM(仅限 Linux)文件系统不允许解除链接文件。
EPERMEACCES包含 pathname 的目录设置了粘滞位(S_ISVTX),并且进程的有效 UID 既不是要删除的文件的 UID,也不是包含它的目录的 UID,并且进程没有特权(Linux:没有 CAP_FOWNER 功能)。
EROFS pathname 指向只读文件系统上的文件。

符合标准

SVr4、4.3BSD、POSIX.1-2001。

错误

NFS 底层协议中的缺陷会导致仍在使用的文件意外消失。

参见



previous next Printer Friendly

广告


  

广告



广告