Системный вызов fchmodat()#

Описание#

Системный вызов fchmodat() - эквивалент системного вызова chmod(), используется для изменения прав доступа к файлам, определяемым файловыми уникальными идентификаторами — дескрипторами — относительно каталога, на который ссылается данный дескриптор.

Синтаксис системного вызова:

#define _ATFILE_SOURCE
#include <fcntl.h>           /* Definition of AT_* constants */
#include <sys/stat.h>

int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags);

Где:

  • #define... - определение директивы, необходимой для доступа к некоторым функциям и константам;

  • #include <fcntl.h>... и #include <sys/stat.h> - включение заголовочных файлов, содержащих определения используемых функций и констант;

  • int - целочисленный тип данных;

  • dirfd - файловый дескриптор каталога;

  • const char *pathname - путь и имя файла/каталога;

  • mode_t mode - режим прав доступа;

  • flags - флаги.

Если путь в pathname относительный, то он интерпретируется относительно каталога, на который ссылается файловый дескриптор dirfd (а не относительно текущего рабочего каталога, как в chmod()).

Если pathname относительный, а dirfd - это специальное значение AT_FDCWD (константа текущего рабочего каталога), то pathname интерпретируется относительно текущего рабочего каталога вызывающего процесса.

Если pathname абсолютный, то dirfd игнорируется.

Флаги могут быть либо равны 0, либо быть AT_SYMLINK_NOFOLLOW - если pathname символьная ссылка, то используется сама ссылка без перехода по ней.

Дополнительная информация#

Дополнительную информацию можно получить, выполнив команду:

man fchmodat