table of contents
SETXATTR(2) | Руководство программиста Linux | SETXATTR(2) |
ИМЯ¶
setxattr, lsetxattr, fsetxattr - устанавливает расширенное значение атрибутов
ОБЗОР¶
#include <sys/types.h> #include <attr/xattr.h> int setxattr(const char *path, const char *name, const void *value, size_t size, int flags); int lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); int fsetxattr(int fd, const char *name, const void *value, size_t size, int flags);
ОПИСАНИЕ¶
Расширенные атрибуты представляют собой пару имя:значение и связываются с записями inode (файлы, каталоги, символьные ссылки и т.п.). Они являются расширениями к обычным атрибутам, связанным со всеми записями inode в системе (например, данные stat(2)). Полное описание модели расширенных атрибутов можно найти в attr(5).
setxattr() устанавливает значение value расширенного атрибута с именем, заданным в name и связанного с заданным path в файловой системе. Должен быть указан size для value.
Вызов lsetxattr() идентичен setxattr(), за исключением случая работы с символьными ссылками; он устанавливает расширенный атрибут на ссылке, а не на том файле, на который она указывает.
Вызов fsetxattr() идентичен setxattr(), отличием является то, что расширенный атрибут устанавливается на открытом файле, на который указывает fd (возвращаемом open(2)), а не на указанном в path.
Имя расширенного атрибута представляет собой строку, заканчивающуюся NULL. Имя name включает префикс пространства имён; их может быть несколько, разрозненные пространства ассоциируются с разными inode. Значением value расширенного атрибута является произвольный кусок текстовых или двоичных данных определённой длины.
Аргумент flags может использоваться для уточнения семантики операций. XATTR_CREATE определяет только создание и выдаёт ошибку, если указанный атрибут уже существует. XATTR_REPLACE определяет только операцию замены и выдаёт ошибку, если указанный атрибут не существует. По умолчанию (без флагов) расширенный атрибут будет создан при необходимости, или просто заменит значение существующего атрибута.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
При успешном выполнении возвращается ноль. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.
Если указан флаг XATTR_CREATE и атрибут уже существует, то errno устанавливается в EEXIST. Если указан флаг XATTR_REPLACE и атрибут не существует, то errno устанавливается в ENOATTR.
Если не хватает пространства для хранения расширенного атрибута, то errno устанавливается в ENOSPC, или EDQUOT, если причиной этого было ограничение по квоте.
Если расширенные атрибуты не поддерживаются файловой системой или отключены, то errno присваивается значение ENOTSUP.
Ошибки системного вызова stat(2) также применимы и тут.
ВЕРСИИ¶
Данные системные вызовы доступны в Linux начиная с ядра версии 2.4; поддержка в glibc появилась в версии 2.3.
СООТВЕТСТВИЕ СТАНДАРТАМ¶
Данные системные вызовы есть только в Linux.
СМОТРИТЕ ТАКЖЕ¶
getfattr(1), setfattr(1), getxattr(2), listxattr(2), open(2), removexattr(2), stat(2), attr(5), symlink(7)
2001-12-31 | Linux |