getcwd, getwd, get_current_dir_name - get current working directory
#include <unistd.h>
char *getcwd(char buf[.size], size_t size);
char *get_current_dir_name(void);
[[deprecated]] char *getwd(char buf[PATH_MAX]);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
These functions return a null-terminated string containing an
absolute pathname that is the current working directory of the calling
process. The pathname is returned as the function result and via the
argument buf
, if present.
The getcwd() function copies an absolute pathname of
the current working directory to the array pointed to by buf
,
which is of length size
.
If the length of the absolute pathname of the current working
directory, including the terminating null byte, exceeds size
bytes, NULL is returned, and errno
is set to
ERANGE; an application should check for this error, and
allocate a larger buffer if necessary.
As an extension to the POSIX.1-2001 standard, glibc's
getcwd() allocates the buffer dynamically using
malloc(3) if buf
is NULL. In this case, the
allocated buffer has the length size
unless size
is
zero, when buf
is allocated as big as necessary. The caller
should free(3) the returned buffer.
get_current_dir_name() will malloc(3) an array big enough to hold the absolute pathname of the current working directory. If the environment variable PWD is set, and its value is correct, then that value will be returned. The caller should free(3) the returned buffer.
getwd() does not malloc(3) any
memory. The buf
argument should be a pointer to an array at
least PATH_MAX bytes long. If the length of the
absolute pathname of the current working directory, including the
terminating null byte, exceeds PATH_MAX bytes, NULL is
returned, and errno
is set to ENAMETOOLONG.
(Note that on some systems, PATH_MAX may not be a
compile-time constant; furthermore, its value may depend on the
filesystem, see pathconf(3).) For portability and
security reasons, use of getwd() is deprecated.
On success, these functions return a pointer to a string containing
the pathname of the current working directory. In the case of
getcwd() and getwd() this is the same
value as buf
.
On failure, these functions return NULL, and errno
is set to
indicate the error. The contents of the array pointed to by buf
are undefined on error.