[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Изменение временных отметок файла - Пример

Эта программа демонстрирует, как работает системный вызов utime(2).
Она устанавливает временные отметки вашего файла равными
соответствующим временным отметкам другого файла или равными текущему
времени. Этот пример является упрощенной версией команды touch(1).
Эта программа работает следующим образом:
16-23     Если первый аргумент - путевое имя файла, то получаем его
времена последнего доступа и изменения. Отсутствие первого аргумента
указывается с помощью "-".
24-25     Если первый аргумент равен "-", указатель на times
устанавливаем равным NULL, для задания текущего времени.
26-29     Изменяем временные характеристики второго файла.
Эта программа демонстрируется следующим образом:
$ ls -ld /uxm2/tmm
drw-r--r--   4 tmm     ustg         240 Dec 15 10:38 /uxm2/tmm
$ date
Wed Dec 17 18:17:15 EST 1986
$ ls -l file
-rw-r--r--   1 tmm     ustg           0 Dec 11 15:35 file
$ settime - file
$ ls -l file
-rw-r--r--   1 tmm     ustg           0 Dec 17 18:18 file
$ settime /uxm2/tmm file
$ ls -l file
-rw-r--r--   1 tmm     ustg           0 Dec 15 10:38 file

Файл: settime.c
              ИЗМЕНЕНИЕ ВРЕМЕННЫХ ОТМЕТОК ФАЙЛА - ПРИМЕР
 1 #include <stdio.h>
 2 #include <sys/types.h>
 3 #include <stdlib.h>
 4 #include <sys/stat.h>
 5 #include <utime.h>
 6
 7 main(int argc, char *argv[])
 8 {
 9     struct stat stbuf;
10     struct utimbuf timestamp, *times = &timestamp;
11
12     if (argc < 3) {
13         printf("usage: \t%s otherfile yourfile\n", arg
14         exit(1);
15     }
16     if (argv[1][0] != '-') {
17         if (stat(argv[1], &stbuf) == -1) {
18             perror(argv[1]);
19             exit(2);
20         }
21         times->actime = stbuf.st_atime;
22         times->modtime = stbuf.st_mtime;
23     }
24     else
25         times = NULL;
26     if (utime(argv[2], times) == -1) {
27         perror(argv[2]);
28         exit(3);
29     }
30     exit(0);
31 }