utime()

Записать время модификации файла или каталога

Прототип:

#include <sys/types.h>
#include <utime.h>
int utime( const char *path,
const struct utimbuf *times );

Аргументы:

path
Путевое имя файла, для которого необходимо получить или установить время модификации (изменения).
times
NULL, или указатель на структуру struct utimbuf, в которой будет сохранено время модификации.

Библиотека:

libc

Описание:

Функция utime() записывает время модификации файла или каталога, указанного в параметре path.

Если параметр times равен NULL, времена доступа и модификации файла или каталога будут установлены в значение текущего времени. Действующий (эффективный) идентификатор пользователя процесса (user ID) должен совпадать с идентификатором владельца файла или иметь права на запись в данный файл или каталог, или соответствующие привилегии для использования функции utime().

Если параметр times не равен NULL, то он интерпретируется как указатель на структуру struct utimbuf и времена доступа и модификации файла или каталога будут установлены в соответствии со значениями элементов этой структуры. Только владельцу файла или каталога и процессам с соответствующими привилегиями разрешено использовать функцию utime() подобным образом. Времена доступа и модификации берутся из полей и modtime структуры struct utimbuf.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EACCES
Отсутствует разрешение на поиск компонента пути path, либо параметр times равен NULL и эффективный user ID не соответствует владельцу файла, или нет прав на запись.
ENAMETOOLONG
Длина параметра path превышает значение PATH_MAX, или длина компонента путевого имени превышает значение NAME_MAX..
ENOENT
Компонент в пути path не является существующим именем файла, или path является пустой строкой.
ENOTDIR
Компонент пути path не является каталогом.
EPERM
Параметр times не равен NULL, а эффективный user ID имеет доступ на запись в файл, но не соответствует владельцу файла, или вызывающий процесс не имеет соответствующих привилегий.
EROFS
Файловая система, в которой находится файл, доступна только по чтению (read-only ФС).

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <utime.h>
int main( int argc, char *argv[] )
{
if ( (utime( argv[1], NULL ) != 0) && (argc > 1) )
{
printf( "Невозможно установить время для %s\n", argv[1] );
}
return (EXIT_SUCCESS);
}

Классификация:

POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

struct utimbuf, errno, futime()




Предыдущий раздел: Описание API системной библиотеки