REALPATH(3)            FreeBSD Library Functions Manual            REALPATH(3)

NAME

     realpath - returns the canonicalized absolute pathname

LIBRARY

     Standard C Library (libc, -lc)

SYNOPSIS

     #include <stdlib.h>

     char *
     realpath(const char * restrict pathname, char * restrict resolved_path);

DESCRIPTION

     The realpath() function resolves all symbolic links, extra "/" characters
     and references to /./ and /../ in pathname, and copies the resulting
     absolute pathname into the memory pointed to by resolved_path.  The
     resolved_path argument must point to a buffer capable of storing at least
     PATH_MAX characters, or be NULL.

     The realpath() function will resolve both absolute and relative paths and
     return the absolute pathname corresponding to pathname.  All components
     of pathname must exist when realpath() is called, and all but the last
     component must name either directories or symlinks pointing to the
     directories.

RETURN VALUES

     On success, the realpath() function returns resolved_path if it was not
     NULL, or a pointer to a null-terminated string which must be freed by the
     caller if it was.  If an error occurs, realpath() returns NULL, and if
     resolved_path was not NULL, the array that it points to contains the
     pathname which caused the problem.

ERRORS

     The function realpath() may fail and set the external variable errno for
     any of the errors specified for the library functions lstat(2),
     readlink(2) and getcwd(3).

SEE ALSO

     basename(3), dirname(3), free(3), getcwd(3)

STANDARDS

     The realpath() function conforms to IEEE Std 1003.1-2001 ("POSIX.1").

HISTORY

     The realpath() function first appeared in 4.4BSD.

FreeBSD 15.1-STABLE-HBSD        March 18, 2026                     REALPATH(3)