getxattr, lgetxattr, fgetxattr -
получить
расширенное
значение
атрибута
Standard C library (
libc,
-lc)
#include <sys/xattr.h>
ssize_t getxattr(const char *path, const char *name,
void value[.size], size_t size);
ssize_t lgetxattr(const char *path, const char *name,
void value[.size], size_t size);
ssize_t fgetxattr(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). Это
можно
использовать
для
определения
размера
буфера,
который
вместил бы
всё
значение,
связанное
с
расширенным
атрибутом
(но учтите,
есть
вероятность,
что
значение
атрибута
может
измениться
между
двумя
вызовами,
поэтому
всё равно
нужно
проверять
возвращаемое
состояние
после
второго
вызова).
On success, these calls return a nonnegative value which is the size (in bytes)
of the extended attribute value. On failure, -1 is returned and
errno
is set to indicate the error.
- E2BIG
- Размер
значения
атрибута
больше
максимально
разрешённого
размера;
атрибут
невозможно
считать.
Это может
случиться
в файловых
системах
(например NFSv4),
которые
поддерживают
очень
большие
значения
атрибутов.
- ENODATA
- Атрибут
с таким
именем не
существует
или
процесс не
имеет
доступа к
этому
атрибуту.
- ENOTSUP
- Расширенные
атрибуты
не
поддерживаются
файловой
системой
или
отключены.
- ERANGE
- Размер
size буфера value
слишком
мал для
хранения
результата.
Также
могут
возникать
ошибки,
описанные
в
stat(2).
These system calls have been available since Linux 2.4; glibc support is
provided since glibc 2.3.
Данные
системные
вызовы
есть
только в Linux.
Смотрите
listxattr(2).
getfattr(1),
setfattr(1),
listxattr(2),
open(2),
removexattr(2),
setxattr(2),
stat(2),
symlink(7),
xattr(7)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitry Bolkhovskikh
<
[email protected]>, Vladislav <
[email protected]>,
Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]