Хрестоматия по программированию на Си в Unix


Системные вызовы и взаимодействие с UNIX. Хрестоматия по программированию на Си в Unix - стр. 6


#include <time.h>

main(){ /* команда date */ time_t t = time(NULL); char *s = ctime(&t); printf("%s", s); }

Обратите внимание, что строка s уже содержит на конце символ '\n'.

6.2.3. Структура stat, заполняемая системным вызовом stat(), кроме прочих полей содержит поля типа time_t st_ctime, st_mtime и st_atime - время последнего изменения содержимого I-узла файла, время последнего изменения файла и время последнего доступа к файлу.

  • Поле st_ctime изменяется (устанавливается равным текущему астрономическому времени) при применении к файлу вызовов creat, chmod, chown, link, unlink, mknod, utime, write (т.к. изменяется длина файла); Это поле следует рассматривать как время модификации прав доступа к файлу;
  • st_mtime - write, creat, mknod, utime; Это поле следует рассматривать как время модификации содержимого файла (данных);
  • st_atime - read, creat, mknod, utime; Это поле следует рассматривать как время чтения содержимого файла (данных).

Модифицируйте функцию typeOf(), чтобы она печатала еще и эти даты.

utime(имяФайла, NULL);

Он используется для взаимодействия с программой make - в команде touch. Изменить время можно только своему файлу.

6.2.4. Напишите аналог команды ls -tm, выдающей список имен файлов текущего каталога, отсортированный по убыванию поля st_mtime, то есть недавно модифицированные файлы выдаются первыми. Для каждого прочитанного из каталога имени надо сделать stat; имена файлов и времена следует сохранить в массиве структур, а затем отсортировать его.

6.2.5. Напишите аналогичную программу, сортирующую файлы в порядке возрастания их размера (st_size).

6.2.6. Напишите аналог команды ls -l, выдающий имена файлов каталога и их коды доступа в формате rwxrw-r--. Для получения кодов доступа используйте вызов stat

stat( имяФайла, &st); кодыДоступа = st.st_mode & 0777;

Для изменения кодов доступа используется вызов

chmod(имя_файла, новые_коды);

Можно изменять коды доступа, соответствующие битовой маске




- Начало -  - Назад -  - Вперед -