getxattr(2)

НАИМЕНОВАНИЕ
getxattr, lgetxattr, fgetxattr - получить расширенное значение атрибута

БИБЛИОТЕКА
Стандартная библиотека языка C (libc, -lc)

ОБЗОР
#include <sys/xattr.h>

ssize_t getxattr(size_t size;
                 const char *path, const char *name,
                 void value[size], size_t size);
ssize_t lgetxattr(size_t size;
                 const char *path, const char *name,
                 void value[size], size_t size);
ssize_t fgetxattr(size_t size;
                 int fd, const char *name,
                 void value[size], size_t size);

ОПИСАНИЕ
Расширенные атрибуты представляют собой пару имя:значение и связываются с записями inode (файлы, каталоги, символьные ссылки и т.п.). Они являются расширениями к обычным атрибутам, связанным со всеми записями inode в системе (например, данные stat(2)). Полное описание модели расширенных атрибутов можно найти в xattr(7).

getxattr() возвращает значение расширенного атрибута с именем name и связанного с указанным путем path в файловой системе. Значение атрибута помещается в буфер, указанный в value; в size задаётся размер этого буфера. В качестве возвращаемого значения вызова возвращается количество байт, помещённых в value.

lgetxattr() идентичен getxattr(), за исключением указания символьной ссылки, когда рассматривается именно ссылка, а не файл, на который она указывает.

fgetxattr() идентичен getxattr(), только вместо path берётся открытый файл, на который указывает fd (возвращаемый open(2)).

Расширенный атрибут name является строкой, заканчивающейся null. Имя включает префикс пространства имён; их может быть несколько, разрозненные пространства связаны с разными записями inode. Значением расширенного атрибута является произвольный кусок текстовых или двоичных данных, который был назначен с помощью setxattr(2).

Если size равно нулю, то эти вызовы возвращают текущий размер указанного расширенного атрибута (и не изменяют value). Это можно использовать для определения размера буфера, который вместил бы всё значение, связанное с расширенным атрибутом (но учтите, есть вероятность, что значение атрибута может измениться между двумя вызовами, поэтому всё равно нужно проверять возвращаемое состояние после второго вызова).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении эти вызовы возвращают неотрицательное значение, которое является размером (в байтах) значения расширенного атрибута. При неудаче возвращается -1 и errno устанавливается для указания ошибки.

ОШИБКИ

E2BIG
    Размер значения атрибута больше максимально разрешённого размера; атрибут невозможно считать. Это может случиться в файловых системах (например NFSv4), которые поддерживают очень большие значения атрибутов.

ENODATA
    Атрибут с таким именем не существует или процесс не имеет доступа к этому атрибуту.

ENOTSUP
    Расширенные атрибуты не поддерживаются файловой системой или отключены.

ERANGE
    Размер size буфера value слишком мал для хранения результата.

Также могут возникать ошибки, описанные в stat(2).

СТАНДАРТЫ
Linux.

ИСТОРИЯ
Linux 2.4, glibc 2.3.

ПРИМЕРЫ
Смотрите listxattr(2).

СМОТРИТЕ ТАКЖЕ
getfattr(1), setfattr(1), listxattr(2), open(2), removexattr(2), setxattr(2), stat(2), symlink(7), xattr(7)

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (<debian-l10n-russian@lists.debian.org>).