rename(2) System Calls Manual rename(2) rename, renameat, renameat2 - (libc -lc) #include int rename(const char *oldpath, const char *newpath); #include /* Definition of AT_* constants */ #include int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath); int renameat2(int olddirfd, const char *oldpath, int newdirfd, const char *newpath, unsigned int flags); glibc ( feature_test_macros(7)): renameat(): Since glibc 2.10: _POSIX_C_SOURCE >= 200809L Before glibc 2.10: _ATFILE_SOURCE renameat2(): _GNU_SOURCE rename() . ( link(2)) . oldpath . : . newpath newpath . oldpath newpath . oldpath newpath rename() . newpath rename() newpath . oldpath . newpath . oldpath newpath . renameat() renameat() rename() . oldpath olddirfd ( rename() ). oldpath olddirfd AT_FDCWD oldpath ( rename()). oldpath olddirfd. newpath oldpath newdirfd. openat(2) renameat(). renameat2() renameat2() flags . renameat2() flags renameat(). flags : RENAME_EXCHANGE oldpath newpath . ( ). RENAME_NOREPLACE newpath . newpath . RENAME_NOREPLACE RENAME_EXCHANGE. RENAME_NOREPLACE . : o ext4 ( 3.15); o btrfs, tmpfs, cifs ( 3.17); o xfs ( 4.0) o 4.9 ext2 minix reiserfs jfs vfat bpf. RENAME_WHITEOUT ( 3.18) /. RENAME_WHITEOUT "whiteout" . whiteout . "whiteout" /. . whiteout . ( ) . "whiteouted" ( ). . / whiteout {0,0}. ( / whiteout BSD union mount inode DT_WHT CODA XFS whiteout 4.19 .) RENAME_WHITEOUT ( CAP_MKNOD). RENAME_WHITEOUT RENAME_EXCHANGE. RENAME_WHITEOUT . tmpfs ( 3.18) ext4 ( 3.18) XFS ( 4.1) f2fs ( 4.2) btrfs ( 4.7) ubifs ( 4.9). . -1 errno . EACCES oldpath newpath oldpath newpath oldpath ( ..). ( path_resolution(7).) EBUSY oldpath newpath ( ) ( ) . ( EBUSY -- -- EBUSY .) EDQUOT . EFAULT oldpath newpath . EINVAL . EISDIR newpath oldpath . ELOOP oldpath newpath. EMLINK oldpath newpath . ENAMETOOLONG oldpath newpath . ENOENT oldpath newpath oldpath newpath . ENOMEM . ENOSPC . ENOTDIR oldpath newpath . oldpath newpath . ENOTEMPTY EEXIST newpath "." "..". EPERM EACCES oldpath (S_ISVTX) (: CAP_FOWNER) newpath (: CAP_FOWNER) oldpath . EROFS . EXDEV oldpath newpath . ( rename() .) renameat() renameat2(): EBADF oldpath (newpath) olddirfd (newdirfd) . ENOTDIR oldpath olddirfd newpath newdirfd renameat2(): EEXIST flags RENAME_NOREPLACE newpath . EINVAL flags. EINVAL RENAME_NOREPLACE RENAME_EXCHANGE flags. EINVAL RENAME_WHITEOUT RENAME_EXCHANGE flags. EINVAL flags. ENOENT flags RENAME_EXCHANGE newpath . EPERM RENAME_WHITEOUT flags CAP_MKNOD. rename() C11 POSIX.1-2024. renameat() POSIX.1-2024. renameat2() . rename() C89 POSIX.1-2001 4.3BSD. renameat() POSIX.1-2008. 2.6.16 glibc 2.4. renameat2() 3.15 glibc 2.28. glibc renameat() glibc rename(). oldpath newpath glibc /proc/self/fd olddirfd newdirfd. NFS . RPC . . link(2) . mv(1) rename(1) chmod(2) link(2) symlink(2) unlink(2) path_resolution(7) symlink(7) 3 . . : . 6.18 8 2026 rename(2)