The Open Group Base Specifications Issue 8
IEEE Std 1003.1-2024
Copyright © 2001-2024 The IEEE and The Open Group

NAME

chdir — change working directory

SYNOPSIS

#include <unistd.h>

int chdir(const char *
path);

DESCRIPTION

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 '/'.

RETURN VALUE

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.

ERRORS

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}.

The following sections are informative.

EXAMPLES

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);

APPLICATION USAGE

None.

RATIONALE

The chdir() function only affects the working directory of the current process.

FUTURE DIRECTIONS

None.

SEE ALSO

getcwd

XBD <unistd.h>

CHANGE HISTORY

First released in Issue 1. Derived from Issue 1 of the SVID.

Issue 6

The APPLICATION USAGE section is added.

The following new requirements on POSIX implementations derive from alignment with the Single UNIX Specification:

The following changes were made to align with the IEEE P1003.1a draft standard:

Issue 7

Austin Group Interpretation 1003.1-2001 #143 is applied.

POSIX.1-2008, Technical Corrigendum 1, XSH/TC1-2008/0047 [324] is applied.

End of informative text.

 

return to top of page

UNIX® is a registered Trademark of The Open Group.
POSIX™ is a Trademark of The IEEE.
Copyright © 2001-2024 The IEEE and The Open Group, All Rights Reserved
[ Main Index | XBD | XSH | XCU | XRAT ]