unlink(2) System Calls Manual unlink(2) unlink, unlinkat - (libc -lc) #include int unlink(const char *path); #include /* AT_* */ #include int unlinkat(int dirfd, const char *path, int flags); glibc ( feature_test_macros(7)): unlinkat(): glibc 2.10: _POSIX_C_SOURCE >= 200809L glibc 2.10: _ATFILE_SOURCE unlink() . . . . FIFO . unlinkat() unlinkat() unlink() rmdir(2) ( flags AT_REMOVEDIR ) . path dirfd ( unlink() rmdir(2) ). path dirfd AT_FDCWD path ( unlink() rmdir(2)). path dirfd. flags 0 ORing unlinkat(). : AT_REMOVEDIR unlinkat() unlink() path. AT_REMOVEDIR rmdir(2) path. openat(2) unlinkat(). . -1 errno . EACCES path UID path . ( path_resolution(7).) EBUSY path NFS inode ("NFS silly renamed"). EFAULT path . EIO /. EISDIR path . ( POSIX Linux 2.1.132.) ELOOP path. ENAMETOOLONG path . ENOENT path path . ENOMEM . ENOTDIR path . EPERM . ( POSIX Linux EISDIR .) EPERM (Linux ) . EPERM EACCES path (S_ISVTX) UID UID UID (Linux: CAP_FOWNER). EPERM . ( FS_IOC_SETFLAGS(2const).) EROFS path . unlink() rmdir(2) unlinkat(). unlinkat(): EBADF path dirfd AT_FDCWD . EINVAL (flag) flags. EISDIR path AT_REMOVEDIR flags. ENOTDIR path dirfd . POSIX.1-2024. unlink() SVr4 4.3BSD POSIX.1-2001. unlinkat() POSIX.1-2008. 2.6.16 glibc 2.4. glibc unlinkat() glibc unlink() rmdir(2). path glibc /proc/self/fd dirfd. NFS . rm(1) unlink(1) chmod(2) link(2) mknod(2) open(2) rename(2) rmdir(2) mkfifo(3) remove(3) path_resolution(7) symlink(7) 3 . . : . 6.18 8 2026 unlink(2)