getcwd(3) Library Functions Manual getcwd(3) getcwd, getwd, get_current_dir_name - (libc -lc) #include char *getcwd(size_t size; char buf[size], size_t size); char *get_current_dir_name(void); [[]] char *getwd(char buf[PATH_MAX]); glibc ( feature_test_macros(7)): get_current_dir_name(): _GNU_SOURCE getwd(): glibc 2.12: (_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L) || /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE glibc 2.12: _BSD_SOURCE || _XOPEN_SOURCE >= 500 . buf . getcwd() buf size. size NULL errno ERANGE . POSIX.1-2001 getcwd() glibc malloc(3) buf NULL. size size buf . free(3). get_current_dir_name() malloc(3) . PWD . free(3). getwd() malloc(3). buf PATH_MAX . PATH_MAX NULL errno ENAMETOOLONG. ( PATH_MAX pathconf(3).) getwd(). . getcwd() getwd() buf. NULL errno . buf . EACCES . EFAULT buf . EINVAL size buf . EINVAL getwd(): buf NULL. ENAMETOOLONG getwd(): PATH_MAX . ENOENT . ENOMEM . ERANGE size . . attributes(7). +-----------------------+------------------------------------+------------------------------------------------------------------------+ | | | | +-----------------------+------------------------------------+------------------------------------------------------------------------+ |getcwd(), getwd() | | MT-Safe | +-----------------------+------------------------------------+------------------------------------------------------------------------+ |get_current_dir_name() | | (MT-Safe) | +-----------------------+------------------------------------+------------------------------------------------------------------------+ POSIX.1-2001 getcwd() buf NULL. POSIX.1-2001 getwd(). C getcwd() . PATH_MAX . ( 3.12 . PATH_MAX 4096 .) ENAMETOOLONG. () . 2.6.36 getcwd() "(unreachable)" ( chroot(2) ). . ( glibc 2.27) getcwd() '/' '(' . getcwd() POSIX.1-2008. get_current_dir_name() GNU. getwd() . getcwd() POSIX.1-2001. getwd() POSIX.1-2001 LEGACY. POSIX.1-2008. getcwd() . getcwd() ( 2.1.92). /proc/self/cwd. proc . EACCES. . (".") fchdir(2) . 2.6.36 "(unreachable)" glibc getcwd() POSIX API . glibc 2.27 getcwd() ENOENT. pwd(1) chdir(2) fchdir(2) open(2) unlink(2) free(3) malloc(3) 3 . . : . 6.18 8 2026 getcwd(3)