Утилита setxattr#
Утилита setxattr используется для установки значений расширенных атрибутов.
Расширенные атрибуты - это пары «name:value» («имя:значение»), связанные с индексными дескрипторами - файлами, каталогами, символьными ссылками и т.д. Они являются расширениями обычных атрибутов, связанных со всеми индексными дескрипторами в системе.
setxattr устанавливает значение расширенного атрибута, идентифицируемого по имени и связанного с заданным путем в файловой системе.
Синтаксис:
#include <sys/xattr.h>
int setxattr(const char *path, const char *name, const void value[.size], size_t size, int flags);
Где:
#include <sys/xattr.h>- включение заголовочного файла, содержащего определения функций и констант, используемых для работы с расширенными атрибутами файлов в системе;int- целочисленный тип данных;const char *path- путь к файлу/каталогу;const char *name- имя расширенного атрибута;const void value[.size]- значение расширенного атрибута;size_t size- размер значения расширенного атрибута в байтах, может быть равен0;flags- флаги.
Имя расширенного атрибута - это строка, заканчивающаяся нулем и содержащая префикс namespace. С отдельным индексным дескриптором может быть связано несколько непересекающихся namespaces.
Значением расширенного атрибута является фрагмент произвольных текстовых или бинарных данных заданной длины.
По умолчанию - значение flags равно 0 - расширенный атрибут будет создан, если он не существует, или значение будет заменено, если атрибут уже существует. Также в поле flags можно указать значения:
XATTR_CREATE- создать атрибут; выдать ошибку, если он уже существует;XATTR_REPLACE- заменить атрибут; выдать ошибку, если он еще не существует.
Варианты возвращаемых значений:
0- успешное выполнение;-1- неуспешное выполнение;errno- ошибка.