Установить времена доступа и модификации файла
#include <sys/time.h>
int utimes( const char *__path,
const struct timeval *__times );
- __path
- Путевое имя файла, для которого необходимо установить времена доступа и модификации (изменения).
- __times
NULL
, или массив типа struct timeval: - Первый элемент массива содержит дату и время последнего доступа к файлу.
- Второй элемент массива содержит дату и время последней модификации файла.
libc
Функция utimes() устанавливает времена доступа и модификации файла с путевым именем __path в значения, указанные в параметре __times. Данная функция позволяет указывать времена с точностью до микросекунд.
Время в структуре struct timeval определяется в секундах и микросекундах от т.н. Эпохи Unix (с 00:00:00 1-го января 1970 года по UTC). При этом возможно округление до ближайшей секунды.
В случае, если значение параметра __times равно NULL
времена доступа и модификации файла устанавливаются равными текущему времени. Действующий (эффективный) идентификатор пользователя процесса (user ID) должен совпадать с идентификатором владельца файла или иметь права на запись в этот файл. После завершения функция utimes() помечает время последнего изменения состояний файла st_ctime как обновленное.
- 0
- Успешное завершение.
- -1
- Возникла ошибка. Код ошибки записан в errno.
- EACCES
- Отсутствует разрешение на поиск компонента в префиксе пути, либо параметр __times равен
NULL
и эффективный user ID не соответствует владельцу файла или нет разрешения на запись в файл. - EFAULT
- Параметры __path или __times указывают на некорректный адрес.
- EINTR
- В ходе выполнения функции utimes() был получен сигнал.
- EINVAL
- Количество микросекунд, определенное в одном или в обоих параметрах struct timeval равно или превышает
1,000,000
или менее 0
. - EIO
- Произошла ошибка ввода-вывода (I/O error) при чтении или записи в файловую систему.
- ELOOP
- При обработке путевого имени __path найдено слишком большое количество символьных ссылок.
- EMULTIHOP
- Компоненты __path требуют перехода на несколько удаленных машин, что не позволяет сделать файловая система.
- ENAMETOOLONG
- Длина параметра __path превышает значение
PATH_MAX
, или длина компонента путевого имени превышает значение NAME_MAX
. - ENOLINK
- Параметр __path указывает на удаленную машину и ссылка на эту машину больше не активна.
- ENOENT
- Компонент в пути __path не является существующим именем файла, или __path является пустой строкой.
- ENOTDIR
- Компонент путевого префикса не является каталогом.
- EPERM
- Параметр __times не равен
NULL
, а эффективный user ID имеет доступ на запись в файл, но не соответствует владельцу файла, или вызывающий процесс не имеет соответствующих привилегий. - EROFS
- Файловая система, в которой находится файл, доступна только по чтению (read-only ФС).
- ENAMETOOLONG
- При обработке путевого имени символической ссылки появился промежуточный результат (компонент пути), длина которого превышает
PATH_MAX
.
POSIX 1003.1 X/Open Systems Interfaces Extension
- Нет
- Обработчик прерываний
- Нет
- Обработчик сигналов
- Да
- В потоке
- Да
struct timeval, stat()
Предыдущий раздел: Описание API системной библиотеки