utimensat(2) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

utimensat(2)

futimens(2)                      System Calls                      futimens(2)

NAME
       futimens, utimensat - set file access and modification times

SYNOPSIS
       #include <sys/stat.h>

       int futimens(int fd, const struct timespec times[2]);


       int utimensat(int fd, const char *path,
            const struct timespec times[2], int flag);

DESCRIPTION
       The  futimens()  and utimensat() functions set the access and modifica‐
       tion times of a file to the values of the  times  argument.  The  futi‐
       mens()  function changes the times of the file associated with the file
       descriptor fd. The utimensat() function changes the times of  the  file
       pointed  to  by the path argument, relative to the directory associated
       with the file descriptor fd. Both functions allow  time  specifications
       accurate to the nanosecond.


       The  times  argument  is an array of two timespec structures. The first
       array member represents the date and time of last access, and the  sec‐
       ond member represents the date and time of last modification. The times
       in the timespec structure are measured in seconds and nanoseconds since
       the  Epoch.  The file's relevant timestamp is set to the greatest value
       supported by the file system that is not  greater  than  the  specified
       time.


       If  the  tv_nsec  field  of  a timespec structure has the special value
       UTIME_NOW, the file's relevant timestamp is set to the  greatest  value
       supported by the file system that is not greater than the current time.
       If the tv_nsec field has the special value UTIME_OMIT, the file's rele‐
       vant  timestamp is not changed. In either case, the tv_sec field is ig‐
       nored.


       If the times argument is a null pointer, both the access and  modifica‐
       tion  timestamps  are  set  to the greatest value supported by the file
       system that is not greater than the current  time.  If  utimensat()  is
       passed  a  relative  path  in the path argument, the file to be used is
       relative to the directory associated with the file  descriptor  fd  in‐
       stead of the current working directory.


       If  utimensat()  is passed the special value AT_FDCWD in the fd parame‐
       ter, the current working directory is used.


       Only a process with the effective user ID equal to the user ID  of  the
       file,  or  with write access to the file, or with the {PRIV_FILE_OWNER}
       privilege may use futimens() or utimensat() with a null pointer as  the
       times  argument  or  with  both tv_nsec fields set to the special value
       UTIME_NOW. Only a process with the effective user ID equal to the  user
       ID  of  the  file or with the {PRIV_FILE_OWNER} privilege may use futi‐
       mens() or utimensat() with a non-null times argument that does not have
       both tv_nsec fields set to UTIME_NOW and does  not  have  both  tv_nsec
       fields set to UTIME_OMIT. If both tv_nsec fields are set to UTIME_OMIT,
       no  ownership or permissions check is performed for the file, but other
       error conditions are still detected (including EACCES errors related to
       the path prefix).


       Values for the flag argument of utimensat() are constructed by  a  bit‐
       wise-inclusive  OR  of  flags  from the following list, defined in <fc‐
       ntl.h>:

       AT_SYMLINK_NOFOLLOW

           If path names a symbolic link, then  the  access  and  modification
           times of the symbolic link are changed.



       Upon  completion,  futimens() and utimensat() mark the last file status
       change timestamp for update.

RETURN VALUES
       Upon successful completion, these functions return 0. Otherwise,  these
       functions  return  -1 and set errno to indicate the error. If -1 is re‐
       turned, the file times are not affected.

ERRORS
       The futimens() and utimensat() functions will fail if:

       EACCES    The times argument is a null pointer, or both tv_nsec  values
                 are  UTIME_NOW, and the effective user ID of the process does
                 not match the owner of the file and write access is denied.


       EINVAL    Either of the times argument structures specified  a  tv_nsec
                 value  that  was  neither UTIME_NOW nor UTIME_OMIT, and was a
                 value less than zero or greater than or equal  to  1000  mil‐
                 lion.

                 A  new file timestamp would be a value whose tv_sec component
                 is not a value supported by the file system.


       EPERM     The times argument is not a null pointer, does not have  both
                 tv_nsec  fields  set to UTIME_NOW, does not have both tv_nsec
                 fields set to UTIME_OMIT, the calling process' effective user
                 ID has write access to the file but does not match the  owner
                 of the file, and {PRIV_FILE_OWNER} is not asserted in the ef‐
                 fective set of the calling process.

                 The  arguments  specify a change to the modification time and
                 the file has one or more of the immutable or rtime system at‐
                 tributes set.

                 The file has the rtime system attribute set and the arguments
                 specify a change to the access  time  that  would  cause  the
                 file's retention time to be reduced.


       EROFS     The file system containing the file is read-only.



       The futimens() function will fail if:

       EBADF    The fd argument is not a valid file descriptor.



       The utimensat() function will fail if:

       EACCES          The  permissions  of the directory underlying fd do not
                       permit directory searches.


       EBADF           The path argument does not specify an absolute path and
                       the fd argument is neither AT_FDCWD nor  a  valid  file
                       descriptor open for reading.


       ENOTDIR         The  path  argument  is  not an absolute path and fd is
                       neither AT_FDCWD nor a file descriptor associated  with
                       a directory.


       EACCES          Search  permission is denied by a component of the path
                       prefix.


       ELOOP           Too many symbolic links were encountered during resolu‐
                       tion of the path argument.


       ENAMETOOLONG    The length of the path argument exceeds {PATH_MAX} or a
                       pathname component is longer than {NAME_MAX}.


       ENOENT          A component of path does not name an existing  file  or
                       path is an empty string.


       ENOTDIR         A  component  of the path prefix is not a directory, or
                       the path argument contains at least one character  that
                       is  not  a slash (/) and ends with one or more trailing
                       slash characters and the last pathname component  names
                       an existing file that is neither a directory nor a sym‐
                       bolic link to a directory.



       The utimensat() function will fail if:

       ENAMETOOLONG    Path name resolution of a symbolic link produced an in‐
                       termediate   result   with   a   length   that  exceeds
                       {PATH_MAX}.


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-LevelAsync-Signal-
       Safe


SEE ALSO
       stat(2), utime(2), utimes(2), attributes(7), fsattr(7),  privileges(7),
       sysattr(7)

HISTORY
       The  futimens()  and utimensat() functions were added to Solaris in So‐
       laris 10 9/10 (Update 9).

Oracle Solaris 11.4               21 Mar 2022                      futimens(2)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3