table of contents
other versions
- wheezy 3.44-1
- jessie 3.74-1
- jessie-backports 4.10-2~bpo8+1
- testing 4.10-2
- unstable 4.10-2
other sections
GETCWD(3) | Linux Programmer's Manual | GETCWD(3) |
NAME¶
getcwd, getwd, get_current_dir_name - get current working directorySYNOPSIS¶
#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)):
get_current_dir_name():
_GNU_SOURCE
- Since glibc 2.12:
-
_BSD_SOURCE || (_XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) && !(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)
-
Before glibc 2.12: -
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
DESCRIPTION¶
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.RETURN VALUE¶
On success, these functions return a pointer to a string containing the pathname of the current working directory. In the case getcwd() and getwd() this is the same value as buf.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.
- EINVAL
- getwd(): buf is NULL.
- ENAMETOOLONG
- getwd(): The size of the null-terminated absolute pathname string exceeds PATH_MAX bytes.
- ENOENT
- The current working directory has been unlinked.
- ERANGE
- The size argument is less than the length of the absolute pathname of the working directory, including the terminating null byte. You need to allocate a bigger array and try again.
CONFORMING TO¶
getcwd() conforms to POSIX.1-2001. Note however that POSIX.1-2001 leaves the behavior of getcwd() unspecified if buf is NULL.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.44 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/.2010-09-20 | GNU |