GETCWD(3) | Library Functions Manual | GETCWD(3) |
getcwd
, getwd
—
#include <unistd.h>
char *
getcwd
(char
*buf, size_t
size);
char *
getwd
(char
*buf);
getcwd
() function copies the absolute pathname of
the current working directory into the memory referenced by
buf and returns a pointer to buf.
The size argument is the size, in bytes, of the array
referenced by buf.
If buf is NULL
,
space is allocated as necessary to store the pathname. This space may later
be free(3)'d.
The function getwd
() is a compatibility
routine which calls getcwd
() with its
buf argument and a size of
MAXPATHLEN
(as defined in the include file
<sys/param.h>
). Obviously,
buf should be at least
MAXPATHLEN
bytes in length.
These routines have traditionally been used by programs to save
the name of a working directory for the purpose of returning to it. A much
faster and less error-prone method of accomplishing this is to open the
current directory (‘.
’) and use the
fchdir(2) function to
return.
NULL
pointer is returned and the global variable
errno is set to indicate the error. In addition,
getwd
() copies the error message associated with
errno into the memory referenced by
buf.
getcwd
() function will fail if:
EACCES
]EINVAL
]ENOENT
]ENOMEM
]ERANGE
]getwd
() and getcwd
()
functions conform to IEEE Std 1003.1-1990
(“POSIX.1”). The IEEE Std 1003.1-2004
(“POSIX.1”) revision marked
getwd
() as legacy and recommended the use of
getcwd
() instead. The IEEE Std
1003.1-2008 (“POSIX.1”) revision removed
getwd
() from the specification.
The ability to specify a NULL
pointer and
have getcwd
() allocate memory as necessary is an
extension.
getwd
() function appeared in
4.0BSD.
getwd
() does not know the length of the supplied
buffer, it is possible for a long (but valid) path to overflow the buffer and
provide a means for an attacker to exploit the caller.
getcwd
() should be used in place of
getwd
() (the latter is only provided for compatibility
purposes).
April 29, 2010 | NetBSD 9.0 |