realpath3
Return the canonicalized absolute pathname
Usage
#include <limits.h> #include <stdlib.h>
char *realpath(const char *restrict path, char *restrict resolved_path);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
realpath():
_XOPEN_SOURCE >= 500
|| /* glibc >= 2.19: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _BSD_SOURCE
Library
Standard C library (libc, -lc)
Overview
realpath() expands all symbolic links and resolves references to /./, /../ and extra '/' characters in the null-terminated string named by path to produce a canonicalized absolute pathname. The resulting pathname is stored as a null-terminated string, up to a maximum of PATH_MAX bytes, in the buffer pointed to by resolved_path. The resulting path will have no symbolic link, /./ or /../ components.
If resolved_path is specified as NULL, then realpath() uses malloc(3) to allocate a buffer of up to PATH_MAX bytes to hold the resolved pathname, and returns a pointer to this buffer. The caller should deallocate this buffer using free(3).
Return value
If there is no error, realpath() returns a pointer to the resolved_path.
Otherwise, it returns NULL, the contents of the array resolved_path are undefined, and errno is set to indicate the error.
Errors
- EACCES
-
Read or search permission was denied for a component of the path prefix.
- EINVAL
-
path is NULL. (Before glibc 2.3, this error is also returned if resolved_path is NULL.)
- EIO
-
An I/O error occurred while reading from the filesystem.
- ELOOP
-
Too many symbolic links were encountered in translating the pathname.
- ENAMETOOLONG
-
A component of a pathname exceeded
NAME_MAXcharacters, or an entire pathname exceededPATH_MAXcharacters.
- ENOENT
-
The named file does not exist.
- ENOMEM
-
Out of memory.
- ENOTDIR
-
A component of the path prefix is not a directory.
Attributes
For an explanation of the terms used in this section, see attributes(7).
| Interface | Attribute | Value |
| realpath() | Thread safety | MT-Safe |
Versions
GNU extensions
If the call fails with either EACCES or ENOENT and resolved_path is not NULL, then the prefix of path that is not readable or does not exist is returned in resolved_path.
Releases
19 releases since Debian 1.1 (Buzz); the text changed 15 times.