REALPATH(3) | Library Functions Manual | REALPATH(3) |
realpath
— returns
the canonicalized absolute pathname
#include
<stdlib.h>
char *
realpath
(const char *restrict
file_name, char *restrict resolved_name);
The
realpath
()
function resolves all symbolic links, extra “/” characters,
and references to /./ and
/../ in file_name. If the
resolved_name argument is non-NULL, the resulting
absolute pathname is copied there (it
must refer
to a buffer capable of storing at least PATH_MAX
characters).
As a permitted extension to the standard, if
resolved_name is NULL, memory is allocated for the
resulting absolute pathname, and is returned by
realpath
().
This memory should be freed by a call to
free(3) when no longer needed.
The
realpath
()
function will resolve both absolute and relative paths and return the
absolute pathname corresponding to file_name. All
components of file_name must exist when
realpath
() is called.
On success, the realpath
() function
returns the address of the resulting absolute pathname, which is
resolved_name if it was non-NULL, or the address of
newly allocated memory. If an error occurs,
realpath
() returns NULL
. If
resolved_name was non-NULL, it will contain the
pathname which caused the problem.
Defining _DARWIN_C_SOURCE
or
_DARWIN_BETTER_REALPATH
before including stdlib.h
will cause the provided implementation of realpath
()
to use F_GETPATH from fcntl(2) to
discover the path.
The function realpath
() may fail and set
the external variable errno for any of the errors
specified for the library functions
alloca(3),
getattrlist(2),
getcwd(3),
lstat(2),
readlink(2),
stat(2), and
strdup(3).
#include
<sys/param.h>
#include
<stdlib.h>
The include file
<sys/param.h>
is
necessary.
In legacy mode, the last component of
file_name does not need to exist when
realpath
()
is called.
The realpath
() function first appeared in
4.4BSD.
April 5, 2008 | macOS 14.6 |