The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
Copyright © 2001-2004 The IEEE and The Open Group, All Rights reserved.

#### NAME

> fchmod - change mode of a file

#### SYNOPSIS

> ``#include <sys/stat.h>
> int fchmod(int` fildes`, mode_t` mode`);
> ``

#### DESCRIPTION

> The fchmod() function shall be equivalent to chmod() except that the file whose permissions are changed is specified by the file descriptor fildes.

> [SHM] If fildes references a shared memory object, the fchmod() function need only affect the S_IRUSR, S_IWUSR, S_IRGRP, S_IWGRP, S_IROTH, and S_IWOTH file permission bits.

> [TYM] If fildes references a typed memory object, the behavior of fchmod() is unspecified.

> If fildes refers to a socket, the behavior of fchmod() is unspecified.

> [XSR] If fildes refers to a STREAM (which is fattach()-ed into the file system name space) the call returns successfully, doing nothing.

#### RETURN VALUE

> Upon successful completion, fchmod() shall return 0. Otherwise, it shall return -1 and set errno to indicate the error.

#### ERRORS

> The fchmod() function shall fail if:

> [EBADF]
>   The fildes argument is not an open file descriptor.
> [EPERM]
>   The effective user ID does not match the owner of the file and the process does not have appropriate privilege.
> [EROFS]
>   The file referred to by fildes resides on a read-only file system.

> The fchmod() function may fail if:

> [EINTR]
>   [XSI] The fchmod() function was interrupted by a signal.
> [EINVAL]
>   [XSI] The value of the mode argument is invalid.
> [EINVAL]
>   The fildes argument refers to a pipe and the implementation disallows execution of fchmod() on a pipe.

The following sections are informative.

#### EXAMPLES

> ##### Changing the Current Permissions for a File

> The following example shows how to change the permissions for a file named /home/cnd/mod1 so that the owner and group have read/write/execute permissions, but the world only has read/write permissions.

>     #include <sys/stat.h>
>     #include <fcntl.h>

>     mode_t mode;
>     int    fildes;
>     ...
>     fildes = open("/home/cnd/mod1", O_RDWR);
>     fchmod(fildes, S_IRWXU | S_IRWXG | S_IROTH | S_IWOTH);

#### APPLICATION USAGE

> None.

#### RATIONALE

> None.

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

> chmod(), chown(), creat(), fcntl(), fstatvfs(), mknod(), open(), read(), stat(), write(), the Base Definitions volume of IEEE Std 1003.1-2001, <sys/stat.h>

#### CHANGE HISTORY

> First released in Issue 4, Version 2.

#### Issue 5

> Moved from X/OPEN UNIX extension to BASE and aligned with fchmod() in the POSIX Realtime Extension. Specifically, the second paragraph of the DESCRIPTION is added and a second instance of [EINVAL] is defined in the list of optional errors.

#### Issue 6

> The DESCRIPTION is updated for alignment with IEEE Std 1003.1j-2000 by stating that fchmod() behavior is unspecified for typed memory objects.

End of informative text.

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
[ Main Index | XBD | XCU | XSH | XRAT ]