Name
chdir, fchdir - change working directory
Synopsis
#include <unistd.h>
int chdir(const char *path);
int fchdir(int fd);
Description
chdir changes the current directory to that
specified in
path.
fchdir is identical to chdir, only that the directory
is given as an open file descriptor.
Return Value
On success, zero is returned.
On error, -1 is returned, and
errno is set appropriately.
Errors
Depending
on the file system, other errors can be returned. The more general errors
for
chdir are listed below:
- EFAULT
- path points outside your accessible
address space.
- ENAMETOOLONG
- path is too long.
- ENOENT
- The file does not exist.
- ENOMEM
- Insufficient kernel memory was available.
- ENOTDIR
- A component of
path is not a directory.
- EACCES
- Search permission is denied on a component
of path.
- ELOOP
- Too many symbolic links were encountered in resolving path.
- EIO
- An I/O error occurred.
The general errors for fchdir are listed below:
- EBADF
- fd is not a valid file descriptor.
- EACCES
- Search permission was denied
on the directory open on fd.
Notes
The prototype for
fchdir is only available
if
_BSD_SOURCE is defined (either explicitly, or implicitly, by not defining
_POSIX_SOURCE or compiling with the -ansi flag).
Conforming to
The
chdir
call is compatible with SVr4, SVID, POSIX, X/OPEN, 4.4BSD. SVr4 documents
additional EINTR, ENOLINK, and EMULTIHOP error conditions but has no ENOMEM.
POSIX.1 does not have ENOMEM or ELOOP error conditions. X/OPEN does not
have EFAULT, ENOMEM or EIO error conditions.
The fchdir call is compatible
with SVr4, 4.4BSD and X/OPEN. SVr4 documents additional EIO, EINTR, and ENOLINK
error conditions. X/OPEN documents additional EINTR and EIO error conditions.
See Also
getcwd(3)
,
chroot(2)
Add a comment | Add a link