CINXE.COM

realpath

<html> <head> <title>realpath</title> <META NAME="KEYWORDS" CONTENT="realpath"> </head> <body BGCOLOR="#ffffff" LINK="#0000ff" VLINK="#0000ff" ALINK="#0000ff" TEXT="#000000"> <center> <h1><b>realpath</b></h1></center> <PRE> <STRONG><A HREF="/man3/REALPATH">REALPATH(3)</A></STRONG> Linux Programmer's Manual <STRONG><A HREF="/man3/REALPATH">REALPATH(3)</A></STRONG> NAME realpath - return the canonicalized absolute pathname SYNOPSIS #include &lt;limits.h&gt; #include &lt;stdlib.h&gt; char *realpath(const char *path, char *resolved_path); Feature Test Macro Requirements for glibc (see <STRONG><A HREF="/man7/feature_test_macros">feature_test_macros(7)</A></STRONG>): realpath(): _XOPEN_SOURCE &gt;= 500 || /* Glibc since 2.19: */ _DEFAULT_SOURCE || /* Glibc versions &lt;= 2.19: */ _BSD_SOURCE DESCRIPTION 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 path- name 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 <STRONG><A HREF="/man3/malloc">malloc(3)</A></STRONG> to allocate a buffer of up to PATH_MAX bytes to hold the resolved path- name, and returns a pointer to this buffer. The caller should deallo- cate this buffer using <STRONG><A HREF="/man3/free">free(3)</A></STRONG>. RETURN VALUE If there is no error, realpath() returns a pointer to the re- solved_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. (In glibc versions before 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_MAX characters, or an entire pathname exceeded PATH_MAX characters. 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 at- <STRONG><A HREF="/man7/tributes">tributes(7)</A></STRONG>. +-----------+---------------+---------+ |Interface | Attribute | Value | +-----------+---------------+---------+ |realpath() | Thread safety | MT-Safe | +-----------+---------------+---------+ CONFORMING TO 4.4BSD, POSIX.1-2001. POSIX.1-2001 says that the behavior if resolved_path is NULL is imple- mentation-defined. POSIX.1-2008 specifies the behavior described in this page. NOTES In 4.4BSD and Solaris, the limit on the pathname length is MAXPATHLEN (found in &lt;sys/param.h&gt;). SUSv2 prescribes PATH_MAX and NAME_MAX, as found in &lt;limits.h&gt; or provided by the <STRONG><A HREF="/man3/pathconf">pathconf(3)</A></STRONG> function. A typical source fragment would be #ifdef PATH_MAX path_max = PATH_MAX; #else path_max = pathconf(path, _PC_PATH_MAX); if (path_max &lt;= 0) path_max = 4096; #endif (But see the BUGS section.) 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. BUGS The POSIX.1-2001 standard version of this function is broken by design, since it is impossible to determine a suitable size for the output buf- fer, resolved_path. According to POSIX.1-2001 a buffer of size PATH_MAX suffices, but PATH_MAX need not be a defined constant, and may have to be obtained using <STRONG><A HREF="/man3/pathconf">pathconf(3)</A></STRONG>. And asking <STRONG><A HREF="/man3/pathconf">pathconf(3)</A></STRONG> does not really help, since, on the one hand POSIX warns that the result of <STRONG><A HREF="/man3/pathconf">pathconf(3)</A></STRONG> may be huge and unsuitable for mallocing memory, and on the other hand <STRONG><A HREF="/man3/pathconf">pathconf(3)</A></STRONG> may return -1 to signify that PATH_MAX is not bounded. The resolved_path == NULL feature, not standardized in POSIX.1-2001, but standardized in POSIX.1-2008, allows this design problem to be avoided. SEE ALSO <STRONG><A HREF="/man1/realpath">realpath(1)</A></STRONG>, <STRONG><A HREF="/man2/readlink">readlink(2)</A></STRONG>, <STRONG><A HREF="/man3/canonicalize_file_name">canonicalize_file_name(3)</A></STRONG>, <STRONG><A HREF="/man3/getcwd">getcwd(3)</A></STRONG>, path- <STRONG><A HREF="/man3/conf">conf(3)</A></STRONG>, <STRONG><A HREF="/man3/sysconf">sysconf(3)</A></STRONG> COLOPHON This page is part of release 5.05 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/. 2017-09-15 <STRONG><A HREF="/man3/REALPATH">REALPATH(3)</A></STRONG></PRE> <center> <h6>Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2025 <a href="http://www.he.net">Hurricane Electric</a>. All Rights Reserved.</h6></center> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10