(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Проекты | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация (English)

Системное программирование, файлы и каталоги

Все программы должны соответствовать принятому стилю кодирования.

Все возвращаемые функциями значения должны проверяться. В случае ошибок выполнение программы должно аварийно завершаться с выдачей сообщения об ошибке и кодом завершения EXIT_FAILURE.

4. Файлы и каталоги

  1. Выполнить функцию stat() для указанного пути и вывести тип объекта (файл, каталог, символьное устройство, блочное устройство, конвейер, символическая ссылка или сокет). В этом и следующих ниже примерах путь к объекту получать из командной строки.
  2. Выполнить функцию stat() для указанного пути и вывести права доступа к объекту.
  3. Выполнить функцию stat() для указанного пути и вывести major и minor устройства, на котором хранится объект. Найти это устройство в каталоге /dev. Используйте major() и minor() (man major) для получения major и minor.
  4. Выполнить функцию stat() для указанного пути. Если объект является устройством, то вывести его major и minor. Сравнить с результатами вывода ls -l.
  5. Выполнить функцию stat() для указанного пути. Вывести количество ссылок на объект.
  6. Выполнить функцию stat() для указанного пути. Вывести идентификатор владельца объекта.
  7. Выполнить функцию stat() для указанного пути. Вывести идентификатор группы объекта.
  8. Выполнить функцию stat() для указанного пути. Если объект является файлом, то вывести размер файла в байтах.
  9. Выполнить функцию stat() для указанного пути. Вывести время последнего обращения.
  10. Выполнить функцию stat() для указанного пути. Вывести время последнего изменения данных.
  11. Выполнить функцию stat() для указанного пути. Вывести время последнего изменения метаданных.
  12. Выполнить функцию stat() для указанного пути. Вывести размер блока файловой системы, количество занятых блоков по 512 байт, а также произведение 512*blocks. Сравнить с результатами работы утилиты du.
  13. Повторить пример 4.1 с использованием функции lstat(). Проверить различия в работе stat() и lstat() для символических ссылок.
  14. Повторить пример 4.1 с использованием функции fstat().
  15. Установить umask 0077 с помощью функции umask(). С помошью функции open() создать файл с указанным именем (получать из командной строки) и правами доступа 0644. Проверить, какие права доступа получит созданный файл. Объяснить результат.
  16. Реализовать пример работы функции unlink(). Объект для удаления получать используя аргументы командной строки.
  17. Реализовать пример работы функции remove(). Объект для удаления получать используя аргументы командной строки.
  18. Реализовать пример работы функции rename(). Имена (старое и новое) получать используя аргументы командной строки.
  19. Реализовать пример работы функции symlink(). Имена (объекта и ссылки на него) получать используя аргументы командной строки.
  20. Реализовать пример работы функции readlink(). Имя ссылки получать используя аргументы командной строки.
  21. Реализовать пример работы функции link(). Имена (объекта и ссылки на него) получать используя аргументы командной строки.
  22. Реализовать пример работы функции mkdir(). Имя каталога получать используя аргументы командной строки.
  23. Реализовать пример работы функции rmdir(). Имя каталога получать используя аргументы командной строки.
  24. Реализовать пример работы функции getcwd().
  25. Реализовать пример работы функции chmod(). Путь к объекту и новые права доступа получать используя аргументы командной строки.
  26. Реализовать вывод списка объектов в указанном каталоге, используя функции opendir(), readdir(), closedir(). Имя каталога получать из командной строки.