December 11, 1993 CHDIR 2

### NAME

chdir, fchdir - change current working directory

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```int` chdir(```const char *path`)
```int` fchdir(```int fd`)

### DESCRIPTION

The ```path` argument points to the pathname of a directory. The chdir(``) function causes the named directory to become the current working directory, that is, the starting point for path searches of pathnames not beginning 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 pathnames 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.

### RETURN VALUES

Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error.

### ERRORS

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 file system.

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.

[```EPERM`]
  The argument ```fd` references a directory which is not at or below the current process's root directory.

### SEE ALSO

chroot(2)

### STANDARDS

The chdir(``) function conforms to ISO/IEC 9945-1:1990 (``POSIX.1'') .

### HISTORY

The fchdir(``) function call appeared in 4.2BSD.