table of contents
- bullseye-backports 4.17.0-2~bpo11+1
- testing 4.17.0-2
- unstable 4.17.0-2
UTIME(2) | Руководство программиста Linux | UTIME(2) |
ИМЯ¶
utime, utimes - изменить последнее время доступа и изменения к inode
СИНТАКСИС¶
#include <sys/types.h> #include <utime.h>
int utime(const char *filename, const struct utimbuf *times);
#include <sys/time.h>
int utimes(const char *filename, const struct timeval times[2]);
ОПИСАНИЕ¶
Замечание: современным приложениям лучше использовать интерфейсы, описанные в utimensat(2).
Системный вызов utime() изменяет время доступа и изменения у inode, указанного в filename на значения полей actime и modtime из структуры times, соответственно.
Если значение times равно NULL, то время доступа и изменения файла устанавливаются в текущее время.
Изменение временных меток разрешено если: процесс имеет соответствующие права или эффективный пользовательский идентификатор равен пользовательскому идентификатору файла, или значение times равно NULL и процесс имеет права на запись в файл.
Структура utimbuf выглядит так:
struct utimbuf {
time_t actime; /* время доступа */
time_t modtime; /* время изменения */ };
Системный вызов utime() позволяет указывать временные метки с точностью до 1 секунды.
Системный вызов utimes() выполняет подобное действие, но аргумент times указывает на массив, а не на структуру. Элементы массива представляют собой структуры timeval, с помощью которых можно указывать временные метки с точностью до 1 микросекунды . Структура timeval:
struct timeval {
long tv_sec; /* секунды */
long tv_usec; /* микросекунды */ };
В times[0] задаётся новое время доступа, а в times[1] новое время изменения. Если значение times равно NULL, то аналогично utime(), время доступа и изменения файла устанавливаются в текущее время.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.
ОШИБКИ¶
- EACCES
- Запрещён поиск в одном из каталогов пути path (см. также path_resolution(7)).
- EACCES
- Значение times равно NULL, эффективный пользовательский идентификатор вызывающего процесса не совпадает с владельцем файла, вызывающий не имеет права на запись в файл, и у вызывающего нет привилегий (Linux: не имеет мандата CAP_DAC_OVERRIDE или CAP_FOWNER).
- ENOENT
- Файл filename не существует.
- EPERM
- Значение times не равно NULL, эффективный пользовательский идентификатор вызывающего процесса не совпадает с владельцем файла и у вызывающего нет привилегий (Linux: не имеет мандата CAP_FOWNER).
- EROFS
- path располагается на файловой системе, доступной только для чтения.
СООТВЕТСТВИЕ СТАНДАРТАМ¶
utime(): SVr4, POSIX.1-2001. В POSIX.1-2008 вызов utime() помечен как устаревший.
utimes(): 4.3BSD, POSIX.1-2001.
ЗАМЕЧАНИЯ¶
В Linux нельзя изменять временные метки у недосягаемых (immutable) файлов или задавать временные метки, отличные от текущего времени для файлов, в которые можно только дописывать.
СМ. ТАКЖЕ¶
chattr(1), touch(1), futimesat(2), stat(2), utimensat(2), futimens(3), futimes(3), inode(7)
ЗАМЕЧАНИЯ¶
Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy Ovchinnikov <dmitriyxt5@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Katrin Kutepova <blackkatelv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
15 сентября 2017 г. | Linux |