DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

chdir(S)


chdir, fchdir -- change working directory

Syntax

cc . . . -lc
#include <unistd.h>

int chdir(const char *path);

int fchdir(int fildes);

Description

chdir and fchdir cause a directory pointed to by path or fildes to become the current working directory. The starting point for path searches for pathnames not beginning with /. path points to the pathname of a directory. The fildes argument to fchdir is an open file descriptor of a directory.

In order for a directory to become the current directory, a process must have execute (search) access to the directory.

Return values

On success, chdir returns 0. On failure, chdir returns -1, sets errno to identify the error, and the current directory remains unchanged.

Diagnostics

In the following conditions, chdir fails and sets errno to:

[EACCES]
Search permission is denied for any component of the pathname.

[EFAULT]
path points outside the allocated address space of the process.

[EINTR]
A signal was caught during the execution of the chdir system call.

[ELOOP]
Too many symbolic links were encountered in translating path.

[ENAMETOOLONG]
The length of the path argument exceeds {PATH_MAX}, or the length of a path component exceeds {NAME_MAX} while {_POSIX_NO_TRUNC} is in effect.

[ENOTDIR]
A component of the pathname is not a directory.

[ENOENT]
Either a component of the path prefix or the directory named by path does not exist or is a null pathname.

[ENOLINK]
path points to a remote machine and the link to that machine is no longer active.

[EMULTIHOP]
Components of path require hopping to multiple remote machines and filesystem type does not allow it.
In the following conditions, fchdir fails and sets errno to:

[EACCES]
Search permission is denied for fildes.

[EBADF]
fildes is not an open file descriptor.

[EINTR]
A signal was caught during the execution of the fchdir system call.

[ENOLINK]
fildes points to a remote machine and the link to that machine is no longer active.

[ENOTDIR]
The open file descriptor fildes does not refer to a directory.

[ENOENT]
The directory pointed to by fildes does not exist.

Files


/lib/libc.a
linking library

See also

chroot(S)

Standards conformance

chdir is conformant with:

AT&T SVID Issue 3;
X/Open Portability Guide, Issue 3, 1989 ;
Intel386 Binary Compatibility Specification, Edition 2 (iBCSe2) ;
IEEE POSIX Std 1003.1-1990 System Application Program Interface (API) [C Language] (ISO/IEC 9945-1) ;
and NIST FIPS 151-1 .

fchdir is conformant with:

AT&T SVID Issue 3.


© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003