svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
fgetattr(3c)
Standard C Library Functions fgetattr(3C)
NAME
fgetattr, fsetattr, getattrat, setattrat - get and set system
attributes
SYNOPSIS
#include <fcntl.h>
#include <sys/types.h>
#include <attr.h>
#include <sys/nvpair.h>
int fgetattr(int fildes, xattr_view_t view, nvlist_t **response);
int fsetattr(int fildes, xattr_view_t view, nvlist_t *request);
int getattrat(int fildes, xattr_view_t view, const char *filename,
nvlist_t **response);
int setattrat(int fildes, xattr_view_t view, const char *filename,
nvlist_t *request);
DESCRIPTION
The fgetattr() function obtains an nvlist of system attribute informa‐
tion about an open file object specified by the file descriptor fildes,
obtained from a successful open(2), creat(2), dup(2), fcntl(2), or
pipe(2) function.
The getattrat() function first opens the extended attribute file speci‐
fied by filename in the already opened file directory object specified
by fildes. It then retrieves an nvlist of system attributes and their
values from filename.
The response argument is allocated by either fgetattr() or getattrat().
The application must call nvlist_free(3NVPAIR) to deallocate the mem‐
ory.
Upon successful completion, the nvlist will contain one nvpair for each
of the system attributes associated with view. The list of views and
the attributes associated with each view are listed below. Not all
underlying file systems support all views and all attributes. The
nvlist will not contain an nvpair for any attribute not supported by
the underlying filesystem.
The fsetattr() function uses the nvlist pointed to by request to update
one or more of the system attribute's information about an open file
object specified by the file descriptor fildes, obtained from a suc‐
cessful open(), creat(), dup(), fcntl(), or pipe() function. The setat‐
trat() function first opens the extended attribute file specified by
filename in the already opened file directory object specified by
fildes. It then uses the nvlist pointed to by request to update one or
more of the system attributes of filename.
If completion is not successful then no system attribute information is
updated.
The following chart lists the supported views, attributes, and data
types for each view:
tab(); lw(1.83i) lw(1.83i) lw(1.83i) lw(1.83i) lw(1.83i) lw(1.83i)
ViewAttributeData type _ XATTR_VIEW_READONLYA_FSIDuint64_value
A_OPAQUEboolean_value A_AV_SCANSTAMPuint8_array[] XATTR_VIEW_READ‐
WRITEA_READONLYboolean_value A_SENSITIVEboolean_value A_HIDDEN‐
boolean_value A_SYSTEMboolean_value A_ARCHIVEboolean_value
A_CRTIMEuint64_array[2] A_NOUNLINKboolean_value A_IMMUTABLE‐
boolean_value A_APPENDONLYboolean_value A_NODUMPboolean_value
A_AV_QUARANTINEDboolean_value A_AV_MODIFIEDboolean_value A_OWNERSIDT{
nvlist composed of uint32_value and string T} A_GROUPSIDT{ nvlist com‐
posed of uint32_value and string T}
RETURN VALUES
Upon successful completion, 0 is returned. Otherwise, -1 is returned
and errno is set to indicate the error.
ERRORS
The fgetattr(), getattrat(), fsetattr(), and setattrat(), functions
will fail if:
EBADF The fildes argument is not a valid open file descriptor.
EINVAL The underlying file system does not support extended file
attributes.
EIO An error occurred while reading from the file system.
The getattrat() and setattrat() functions will fail if:
EACCES Search permission or write permission for filename is denied.
ENOENT The filename argument does not name an existing file in the
extended attribute directory represented by fildes.
EPERM There are insufficient privileges to manipulate attributes.
EXAMPLES
Example 1 Obtain an nvlist of readonly system attributes for an open
file object.
Use fgetattr() to obtain an nvlist of the readonly system attributes
for the open file object represented by file descriptor fildes.
#include <fcntl.h>
#include <sys/types.h>
#include <attr.h>
#include <sys/nvpair.h>
nvlist_t *response;
nvpair_t *pair = NULL;
if (fgetattr(fildes, XATTR_VIEW_READONLY, &response)) {
exit(1);
}
while (pair = nvlist_next_nvpair(response, pair)) {
.
.
.
}
nvlist_free(response);
Example 2 Set the A_READONLY system attribute on an open file object.
Use fsetattr() to set the A_OPAQUE system attribute on the open file
object represented by file descriptor fildes.
nvlist_t *request;
nvpair_t *pair = NULL;
if (nvlist_alloc(&request, NV_UNIQUE_NAME, 0) != 0) {
exit(1);
}
if (nvlist_add_boolean_value(request, A_READONLY, 1) != 0) {
exit(1);
}
if (fsetattr(fildes, XATTR_VIEW_READWRITE, request)) {
exit(1);
}
Example 3 Obtain an nvlist of the read/write system attributes for a
file.
Use getattrat() to obtain an nvlist of the read/write system attributes
for the file named xattrfile in the extended attribute directory of the
open file represented by file descriptor fildes.
nvlist_t *response;
nvpair_t *pair = NULL;
if (getattrat(fildes, XATTR_VIEW_READWRITE, "file", &response)) {
exit(1);
}
while (pair = nvlist_next_nvpair(response, pair)) {
.
.
.
}
nvlist_free(response);
Example 4 Set the A_APPENDONLY system attribute on a file.
Use setattrat() to set the A_APPENDONLY system attribute on the file
named file in the extended attribute directory of the open file repre‐
sented by file descriptor fildes.
nvlist_t *request;
nvpair_t *pair = NULL;
if (nvlist_alloc(&request, NV_UNIQUE_NAME, 0) != 0) {
exit(1);
}
if (nvlist_add_boolean_value(request, A_APPENDONLY, 1) != 0) {
exit(1);
}
if (setattrat(fildes, XATTR_VIEW_READWRITE, "file", request)) {
exit(1);
}
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
TRIBUTE VALUE _ Interface StabilityCommitted _ MT-LevelSafe
SEE ALSO
creat(2), dup(2), fcntl(2), fstat(2), fstatat(2), open(2), pipe(2),
libnvpair(3LIB), attributes(7), fsattr(7)
Oracle Solaris 11.4 17 Aug 2018 fgetattr(3C)