table of contents
- bookworm 4.18.1-1
- bookworm-backports 4.24.0-2~bpo12+1
- testing 4.24.0-2
- unstable 4.24.0-2
setxattr(2) | System Calls Manual | setxattr(2) |
ИМЯ¶
setxattr, lsetxattr, fsetxattr - устанавливает расширенное значение атрибутов
БИБЛИОТЕКА¶
Стандартная библиотека языка C (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 превышает ограничение, задаваемое файловой системой.
ВЕРСИИ¶
Данные системные вызовы доступны начиная с Linux 2.4; поддержка в glibc появилась с glibc 2.3.
СТАНДАРТЫ¶
Данные системные вызовы есть только в Linux.
СМОТРИТЕ ТАКЖЕ¶
getfattr(1), setfattr(1), getxattr(2), listxattr(2), open(2), removexattr(2), stat(2), symlink(7), xattr(7)
ПЕРЕВОД¶
Русский перевод этой страницы руководства разработал(и) Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, 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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
4 декабря 2022 г. | Справочные страницы Linux 6.03 |