mirror of https://github.com/mkerrisk/man-pages
154 lines
4.5 KiB
Groff
154 lines
4.5 KiB
Groff
.\" Hey Emacs! This file is -*- nroff -*- source.
|
|
.\"
|
|
.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
|
|
.\" 1993 Ian Jackson.
|
|
.\"
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
.\" preserved on all copies.
|
|
.\"
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
.\" permission notice identical to this one.
|
|
.\"
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
.\" have taken the same level of care in the production of this manual,
|
|
.\" which is licensed free of charge, as they might when working
|
|
.\" professionally.
|
|
.\"
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
.\"
|
|
.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
|
|
.\" Modified 1996-09-08 by Arnt Gulbrandsen <agulbra@troll.no>
|
|
.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
|
|
.\" Modified 2001-05-17 by aeb
|
|
.\" Modified 2004-06-23 by Michael Kerrisk <mtk-manpages@gmx.net>
|
|
.\"
|
|
.TH UNLINK 2 2004-06-23 "Linux 2.6.7" "Linux Programmer's Manual"
|
|
.SH NAME
|
|
unlink \- delete a name and possibly the file it refers to
|
|
.SH SYNOPSIS
|
|
.B #include <unistd.h>
|
|
.sp
|
|
.BI "int unlink(const char *" pathname );
|
|
.SH DESCRIPTION
|
|
.BR unlink ()
|
|
deletes a name from the filesystem. If that name was the
|
|
last link to a file and no processes have the file open the file is
|
|
deleted and the space it was using is made available for reuse.
|
|
|
|
If the name was the last link to a file but any processes still have
|
|
the file open the file will remain in existence until the last file
|
|
descriptor referring to it is closed.
|
|
|
|
If the name referred to a symbolic link the link is removed.
|
|
|
|
If the name referred to a socket, fifo or device the name for it is
|
|
removed but processes which have the object open may continue to use
|
|
it.
|
|
.SH "RETURN VALUE"
|
|
On success, zero is returned. On error, \-1 is returned, and
|
|
.I errno
|
|
is set appropriately.
|
|
.SH ERRORS
|
|
.TP
|
|
.B EACCES
|
|
Write access to the directory containing
|
|
.I pathname
|
|
is not allowed for the process's effective UID, or one of the
|
|
directories in
|
|
.IR pathname
|
|
did not allow search permission.
|
|
(See also
|
|
.BR path_resolution (2).)
|
|
.TP
|
|
.BR EBUSY " (not on Linux)"
|
|
The file
|
|
.I pathname
|
|
cannot be unlinked because it is being used by the system
|
|
or another process and the implementation considers this an error.
|
|
.TP
|
|
.B EFAULT
|
|
.I pathname
|
|
points outside your accessible address space.
|
|
.TP
|
|
.B EIO
|
|
An I/O error occurred.
|
|
.TP
|
|
.B EISDIR
|
|
.I pathname
|
|
refers to a directory.
|
|
(This is the non-POSIX value returned by Linux since 2.1.132.)
|
|
.TP
|
|
.B ELOOP
|
|
Too many symbolic links were encountered in translating
|
|
.IR pathname .
|
|
.TP
|
|
.B ENAMETOOLONG
|
|
.IR pathname " was too long."
|
|
.TP
|
|
.B ENOENT
|
|
A component in
|
|
.I pathname
|
|
does not exist or is a dangling symbolic link, or
|
|
.I pathname
|
|
is empty.
|
|
.TP
|
|
.B ENOMEM
|
|
Insufficient kernel memory was available.
|
|
.TP
|
|
.B ENOTDIR
|
|
A component used as a directory in
|
|
.I pathname
|
|
is not, in fact, a directory.
|
|
.TP
|
|
.B EPERM
|
|
The system does not allow unlinking of directories,
|
|
or unlinking of directories requires privileges that the
|
|
current process doesn't have.
|
|
(This is the POSIX prescribed error return;
|
|
as noted above, Linux returns
|
|
.B EISDIR
|
|
for this case.)
|
|
.TP
|
|
.BR EPERM " (Linux only)"
|
|
The filesystem does not allow unlinking of files.
|
|
.TP
|
|
.BR EPERM " or " EACCES
|
|
The directory containing
|
|
.I pathname
|
|
has the sticky bit
|
|
.RB ( S_ISVTX )
|
|
set and the process's effective UID is neither the UID of the file to
|
|
be deleted nor that of the directory containing it, and
|
|
the process is not privileged (Linux: does not have the
|
|
.B CAP_FOWNER
|
|
capability).
|
|
.TP
|
|
.B EROFS
|
|
.I pathname
|
|
refers to a file on a read-only filesystem.
|
|
.SH "CONFORMING TO"
|
|
SVr4, SVID, POSIX, X/OPEN, 4.3BSD. SVr4 documents additional error
|
|
conditions EINTR, EMULTIHOP, ETXTBSY, ENOLINK.
|
|
.SH BUGS
|
|
Infelicities in the protocol underlying NFS can cause the unexpected
|
|
disappearance of files which are still being used.
|
|
.SH "SEE ALSO"
|
|
.BR rm (1),
|
|
.BR chmod (2),
|
|
.BR link (2),
|
|
.BR mknod (2),
|
|
.BR open (2),
|
|
.BR path_resolution (2),
|
|
.BR rename (2),
|
|
.BR rmdir (2),
|
|
.BR unlinkat (2),
|
|
.BR mkfifo (3),
|
|
.BR remove (3)
|