setxattr, lsetxattr, fsetxattr -
устанавливает
расширенное
значение
атрибутов
Standard C library (
libc,
-lc)
#include <sys/xattr.h>
int setxattr(const char *path, const char *name,
const void value[.size], size_t size, int flags);
int lsetxattr(const char *path, const char *name,
const void value[.size], size_t size, int flags);
int fsetxattr(int fd, const char *name,
const void value[.size], size_t size, int flags);
Расширенные
атрибуты
представляют
собой пару
имя:
значение
и
связываются
с записями
inode (файлы,
каталоги,
символьные
ссылки и т.п.).
Они
являются
расширениями
к обычным
атрибутам,
связанным
со всеми
записями inode
в системе
(например,
данные
stat(2)).
Полное
описание
модели
расширенных
атрибутов
можно
найти в
xattr(7).
Вызов
setxattr()
устанавливает
значение
value
расширенного
атрибута с
именем,
заданным в
name и
связанного
с заданным
path в
файловой
системе. В
аргументе
size задаётся
размер (в
байтах)
value;
допускается
нулевой
размер.
Вызов
lsetxattr()
идентичен
setxattr(), за
исключением
случая
работы с
символьными
ссылками;
он
устанавливает
расширенный
атрибут на
ссылке, а не
на том
файле, на
который
она
указывает.
Вызов
fsetxattr()
идентичен
setxattr(),
отличием
является
то, что
расширенный
атрибут
устанавливается
на
открытом
файле, на
который
указывает
fd
(возвращаемом
open(2)), а не на
указанном
в
path.
Имя
расширенного
атрибута
представляет
собой
строку,
заканчивающуюся
null. Имя
name
включает
префикс
пространства
имён; их
может быть
несколько,
разрозненные
пространства
ассоциируются
с разными inode.
Значением
value
расширенного
атрибута
является
произвольный
кусок
текстовых
или
двоичных
данных
определённой
длины.
По
умолчанию
(т. е.,
значение
flags
равно), если
расширенный
атрибут
отсутствует,
то он
создаётся,
а если он
существует,
то
заменяется
его
значение.
Для
изменения
такой
работы, в
flags
можно
указать
одно из
следующих
значений:
- XATTR_CREATE
- Выполнять
только
создание,
если
атрибут с
таким
именем
существует
—
возвращать
ошибку.
- XATTR_REPLACE
- Выполнять
только
замену,
если
атрибут с
таким
именем не
существует
—
возвращать
ошибку.
On success, zero is returned. On failure, -1 is returned and
errno is set
to indicate the error.
- EDQUOT
- Предел
по
дисковой
квоте; не
хватает
пространства
для
сохранения
расширенного
атрибута.
- EEXIST
- Указан
XATTR_CREATE, но
атрибут
уже
существует.
- ENODATA
- Указан
XATTR_REPLACE, но
атрибут не
существует.
- ENOSPC
- Не
хватает
пространства
для
сохранения
расширенного
атрибута.
- ENOTSUP
- Неверный
префикс
пространства
имён name.
- ENOTSUP
- Расширенные
атрибуты
не
поддерживаются
файловой
системой
или
отключены.
- EPERM
- Файл
помечен
как
неизменяемый
(immutable) или
только для
добавления
(смотрите
ioctl_iflags(2)).
Также
могут
возникать
ошибки,
описанные
в
stat(2).
- ERANGE
- Размер
name или value
превышает
ограничение,
задаваемое
файловой
системой.
These system calls have been available since Linux 2.4; glibc support is
provided since glibc 2.3.
Данные
системные
вызовы
есть
только в Linux.
getfattr(1),
setfattr(1),
getxattr(2),
listxattr(2),
open(2),
removexattr(2),
stat(2),
symlink(7),
xattr(7)
Русский
перевод
этой
страницы
руководства
был сделан
Alexander Golubev <
[email protected]>, Azamat Hackimov
<
[email protected]>, Hotellook, Nikita
<
[email protected]>, Spiros Georgaras <
[email protected]>, Vladislav
<
[email protected]>, Yuri Kozlov <
[email protected]>
и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]