Next: rewind, Previous: remove, Up: Stdio

### 4.39 `rename`—rename a file

Synopsis

         #include <stdio.h>
         int rename(const char *old, const char *new);

         int _rename_r(struct _reent *reent,
             const char *old, const char *new);

Description
Use `rename` to establish a new name (the string at new) for a file now known by the string at old. After a successful `rename`, the file is no longer accessible by the string at old.

If `rename` fails, the file named `*`old is unaffected. The conditions for failure depend on the host operating system.

The alternate function `_rename_r` is a reentrant version. The extra argument reent is a pointer to a reentrancy structure.

Returns
The result is either `0` (when successful) or `-1` (when the file could not be renamed).

Portability
ANSI C requires `rename`, but only specifies that the result on failure be nonzero. The effects of using the name of an existing file as `*`new may vary from one implementation to another.

Supporting OS subroutines required: `link`, `unlink`, or `rename`.