|
from small one page howto to huge articles all in one place
poll results
Last additions:
May 25th. 2007:
|
You are here: manpages
GETCWD
Section: Linux Programmer's Manual (3) Updated: 2007-07-26 Index
Return to Main Contents
NAME
getcwd, getwd, get_current_dir_name - Get current working directory
SYNOPSIS
#include <unistd.h>
char *getcwd(char *buf, size_t size);
char *getwd(char *buf);
char *get_current_dir_name(void);
Feature Test Macro Requirements for glibc (see
feature_test_macros(7)):
getcwd():
_BSD_SOURCE || _XOPEN_SOURCE >= 500
get_current_dir_name():
_GNU_SOURCE
DESCRIPTION
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 current absolute pathname would require a buffer longer than
size
elements, NULL is returned, and
errno
is set to
ERANGE;
an application should check for this error, and allocate a larger
buffer if necessary.
If
buf
is NULL, the behavior of
getcwd()
is undefined.
As an extension to the POSIX.1-2001 standard, Linux (libc4, libc5, glibc)
getcwd()
allocates the buffer dynamically using
malloc(3)
if
buf
is NULL on call.
In this case, the allocated buffer has the length
size
unless
size
is zero, when
buf
is allocated as big as necessary.
It is possible (and, indeed,
advisable) to
free(3)
the buffers if they have been obtained this way.
get_current_dir_name(),
will
malloc(3)
an array big enough to hold the current directory name.
If the environment
variable
PWD
is set, and its value is correct, then that value will be returned.
getwd(),
does not
malloc(3)
any memory.
The
buf
argument should be a pointer to an array at least
PATH_MAX
bytes long.
getwd()
does only return the first
PATH_MAX
bytes of the actual pathname.
Note that
PATH_MAX
need not be a compile-time constant; it may depend on the file system
and may even be unlimited.
For portability and security reasons, use of
getwd()
is deprecated.
RETURN VALUE
NULL
on failure with
errno
set accordingly, and
buf
on success.
The contents of the array pointed to by
buf
is undefined on error.
ERRORS
- EACCES
-
Permission to read or search a component of the filename was denied.
- EFAULT
-
buf
points to a bad address.
- EINVAL
-
The
size
argument is zero and
buf
is not a null pointer.
- ENOENT
-
The current working directory has been unlinked.
- ERANGE
-
The
size
argument is less than the length of the working directory name.
You need to allocate a bigger array and try again.
CONFORMING TO
getcwd()
conforms to POSIX.1-2001.
getwd()
is present in POSIX.1-2001, but marked LEGACY.
get_current_dir_name()
is a GNU extension.
NOTES
Under Linux, the function
getcwd()
is a system call (since 2.1.92).
On older systems it would query
/proc/self/cwd.
If both system call and proc file system are missing, a
generic implementation is called.
Only in that case can
these calls fail under Linux with
EACCES.
These functions are often used to save the location of the current working
directory for the purpose of returning to it later.
Opening the current
directory (".") and calling
fchdir(2)
to return is usually a faster and more reliable alternative when sufficiently
many file descriptors are available, especially on platforms other than Linux.
SEE ALSO
chdir(2),
fchdir(2),
open(2),
unlink(2),
free(3),
malloc(3)
COLOPHON
This page is part of release 3.05 of the Linux
man-pages
project.
A description of the project,
and information about reporting bugs,
can be found at
http://www.kernel.org/doc/man-pages/.
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- RETURN VALUE
-
- ERRORS
-
- CONFORMING TO
-
- NOTES
-
- SEE ALSO
-
- COLOPHON
-
Please read "Why adblockers are bad".
Ärger mit Freenet.de
|
other Ads
Other free services
.
.
|