UTIMES(2)                       System Calls                       UTIMES(2)
NAME
       utimes, lutimes, futimes, futimesat, futimens, utimensat - set file
       access and modification times
SYNOPSIS
       #include <sys/time.h>       
int utimes(
const char *path, 
const struct timeval times[2]);       
int lutimes(
const char *path, 
const struct timeval times[2]);       
int futimes(
int fildes, 
const struct timeval times[2]);       
int futimesat(
int fildes, 
const char *path,            
const struct timeval times[2]);
       #include <sys/stat.h>       
int futimens(
int fildes, 
const timespec_t nstimes[2]);       
int utimensat(
int fildes, 
const char *path,           
const timespec_t nstimes[2], 
int flag);
DESCRIPTION
       The 
utimes() function sets the access and modification times of the
       file pointed to by the 
path argument to the value of the 
times       argument.  It allows time specifications accurate to the microsecond.
       The 
lutimes() function operates like 
utimes() except if 
path points
       to a symbolic link; in that case 
lutimes() changes the access and
       modifications times of the link, while 
utimes() changes the file that
       is referenced by the link.
       The 
futimes() function sets the access and modification times of the
       file referenced by the file descriptor 
fildes.
       The 
futimesat() function also sets access and modification times.
       See 
fsattr(7). If 
path is a relative path name, however, 
futimesat()       resolves the path relative to the 
fildes argument rather than the
       current working directory.  If 
fildes is set to 
AT_FDCWD, defined in
       <
fcntl.h>, 
futimesat() resolves the path relative to the current
       working directory.  If 
path is a null pointer, 
futimesat() sets the
       access and modification times on the file referenced by 
fildes. The       
fildes argument is ignored if 
futimesat() is provided with an
       absolute path.
       The 
times argument is an array of 
timeval structures. The first array
       member represents the date and time of last access, and the second
       member represents the date and time of last modification.  The times
       in the 
timeval structure are measured in seconds and microseconds
       since the Epoch, although rounding toward the nearest second may
       occur.
       If the 
times argument is a null pointer, the access and modification
       times of the file are set to the current time.  The effective user 
ID       of the process must be the same as the owner of the file, or must
       have write access to the file or the {
PRIV_FILE_OWNER} privilege to
       use this call in this manner. Upon completion, 
utimes() will mark the
       time of the last file status change, 
st_ctime, for update.
       The 
futimens() and 
utimensat() functions also set access and
       modification times; however, instead of taking 
struct timeval, they
       take 
timespec_t which allows for nanosecond granularity. The       
futimens() function sets the access and modification times on the
       file descriptor referenced by 
fildes.
       The 
utimensat() function determines the file to set the access and
       modification times in an similar way to 
futimesat(). If the argument       
path is an absolute path, then the argument 
fildes is ignored;
       otherwise, 
path is interpreted as a path relative to the directory
       specified by 
fildes. If 
fildes is set to 
AT_FDCWD, then 
path is
       resolved relative to the current working directory. The behavior when
       encountering symbolic links may be controlled by the value of the       
flag argument. If the value of flag is the constant       
AT_SYMLINK_NOFOLLOW, then when a symbolic link is encountered while
       resolving a path, it will not be followed. Otherwise, the value of       
flag should be 
0. Note that, unlike 
futimesat(), 
utimensat() does not
       accept a null pointer for the 
path argument.
RETURN VALUES
       Upon successful completion, 
0 is returned.  Otherwise, 
-1 is
       returned, 
errno is set to indicate the error, and the file times will
       not be affected.
ERRORS
       The 
utimes(), 
lutimes(), 
futimes(), 
futimesat(), 
futimens(), and       
utimensat() functions will fail if:       
EACCES                       Search permission is denied by a component of the
                       path prefix; or the 
times argument is a null pointer
                       and the effective user 
ID of the process does not
                       match the owner of the file and write access is
                       denied.       
EFAULT                       The 
path or 
times argument points to an illegal
                       address.       
EINTR                       A signal was caught during the execution of the                       
utimes(), 
lutimes(), 
futimes(), 
futimesat(),                       
futimens(), or 
utimensat() functions.       
EINVAL                       The number of microseconds specified in one or both
                       of the 
timeval structures pointed to by 
times was
                       greater than or equal to 1,000,000 or less than 0.
                       The number of nanoseconds specified in one or both of
                       the 
timespec_t structures pointed to by 
nstimes was
                       greater than or equal to 1,000,000,000 or less than
                       0.       
EIO                       An I/O error occurred while reading from or writing
                       to the file system.       
ELOOP                       Too many symbolic links were encountered in resolving                       
path.       
ENAMETOOLONG                       The length of the 
path argument exceeds {
PATH_MAX} or
                       a pathname component is longer than {
NAME_MAX}.       
ENOLINK                       The 
path argument points to a remote machine and the
                       link to that machine is no longer active.       
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 is relative and the 
fildes argument
                       is not 
AT_FDCWD or does not refer to a valid
                       directory.       
EPERM                       The 
times argument is not a null pointer and the
                       calling process's effective user 
ID has write access
                       to the file but does not match the owner of the file
                       and the calling process does not have the appropriate
                       privileges.       
EROFS                       The file system containing the file is read-only.
       The 
utimes(), 
futimesat(), and 
utimensat() functions may fail if:       
ENAMETOOLONG                       Path name resolution of a symbolic link produced an
                       intermediate result whose length exceeds {
PATH_MAX}.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-----------------+
       |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
       +--------------------+-----------------+
       |Interface Stability | Committed       |
       +--------------------+-----------------+
       |Standard            | See below.      |
       +--------------------+-----------------+
       For 
utimes(), 
utimensat() and 
futimensat(), see 
standards(7).
SEE ALSO
       stat(2), 
utime(2), 
attributes(7), 
fsattr(7), 
standards(7)                              November 8, 2020                     UTIMES(2)