CHDIR(2) BSD Programmer's Manual CHDIR(2)
chdir, fchdir - change current working directory
#include <unistd.h> int chdir(const char *path); int fchdir(int fd);
The path argument points to the pathname of a directory. The chdir() function causes the named directory to become the current working direc- tory, that is, the starting point for path searches of pathnames not be- ginning with a slash ('/'). The fchdir() function causes the directory referenced by fd to become the current working directory, the starting point for path searches of path- names not beginning with a slash ('/'). In order for a directory to become the current directory, a process must have execute (search) access to the directory.
Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error.
chdir() will fail and the current working directory will be unchanged if one or more of the following are true: [ENOTDIR] A component of the path prefix is not a directory. [ENAMETOOLONG] A component of a pathname exceeded {NAME_MAX} characters, or an entire path name exceeded {PATH_MAX} characters. [ENOENT] The named directory does not exist. [ELOOP] Too many symbolic links were encountered in translating the pathname. [EACCES] Search permission is denied for any component of the path- name. [EFAULT] path points outside the process's allocated address space. [EIO] An I/O error occurred while reading from or writing to the filesystem. fchdir() will fail and the current working directory will be unchanged if one or more of the following are true: [EACCES] Search permission is denied for the directory referenced by the file descriptor. [ENOTDIR] The file descriptor does not reference a directory. [EBADF] The argument fd is not a valid file descriptor.
chroot(2)
The chdir() is expected to conform to IEEE Std 1003.1-1988 ("POSIX.1").
The fchdir() function call appeared in 4.2BSD. MirBSD #10-current December 11, 1993 1