chdir — change working directory
#include <unistd.h>
int chdir(const char *path);
The chdir() function shall cause the directory named by the pathname pointed to by the path argument to become the current working directory; that is, the starting point for path searches for pathnames not beginning with '/'.
Upon successful completion, 0 shall be returned. Otherwise, -1 shall be returned, the current working directory shall remain unchanged, and errno shall be set to indicate the error.
The chdir() function shall fail if:
- [EACCES]
- Search permission is denied for any component of the pathname.
- [ELOOP]
- A loop exists in symbolic links encountered during resolution of the path argument.
- [ENAMETOOLONG]
- The length of a component of a pathname is longer than {NAME_MAX}.
- [ENOENT]
- A component of path does not name an existing directory or path is an empty string.
- [ENOTDIR]
- A component of the pathname names an existing file that is neither a directory nor a symbolic link to a directory.
The chdir() function may fail if:
- [ELOOP]
- More than {SYMLOOP_MAX} symbolic links were encountered during resolution of the path argument.
- [ENAMETOOLONG]
- The length of a pathname exceeds {PATH_MAX}, or pathname resolution of a symbolic link produced an intermediate result with a length that exceeds {PATH_MAX}.
Changing the Current Working Directory
The following example makes the value pointed to by directory, /tmp, the current working directory.
#include <unistd.h> ... char *directory = "/tmp"; int ret;
ret = chdir (directory);
None.
The chdir() function only affects the working directory of the current process.
None.
XBD <unistd.h>
First released in Issue 1. Derived from Issue 1 of the SVID.
The APPLICATION USAGE section is added.
The following new requirements on POSIX implementations derive from alignment with the Single UNIX Specification:
The [ELOOP] mandatory error condition is added.
A second [ENAMETOOLONG] is added as an optional error condition.
The following changes were made to align with the IEEE P1003.1a draft standard:
The [ELOOP] optional error condition is added.
Austin Group Interpretation 1003.1-2001 #143 is applied.
POSIX.1-2008, Technical Corrigendum 1, XSH/TC1-2008/0047 [324] is applied.
return to top of page