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.
A newer edition of this document exists here

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] [Option Start] 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. [Option End]

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

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

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

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] [Option Start] The fchmod() function was interrupted by a signal. [Option End]
[EINVAL]
[XSI] [Option Start] The value of the mode argument is invalid. [Option End]
[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 ]