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

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

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

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

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

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

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

  1. Создайте программу, которая будет получать один аргумент командной строки - путь к объекту файловой системы, и выводить для указанного объекта всю информацию, которую можно получить с помощью функции stat(). Должны корректно обрабатываться все варианты типа объекта (файл, каталог, символьное устройство, блочное устройство, конвейер, символическая ссылка или сокет).
  2. Создайте собственный упрощенный аналог утилиты du:
    > du --help
    Использование: du [КЛЮЧ]… [ФАЙЛ]…
    ...
    Суммирует использование дискового пространства каждого ФАЙЛА, с каталогами
    ...
    
    Для упрощенного аналога достаточно выдавать использование дискового пространства для всех файлов, указанных в командной строке. Работать с каталогами не требуется.
  3. Создайте собственный аналог утилиты readlink:
    > readlink --help
    Использование: readlink [КЛЮЧ]… ФАЙЛ…
    Печатает значение символьной ссылки или каноническое имя файла
    ...
    
  4. Создайте собственный упрощенный аналог утилиты chmod:
    >chmod --help
    Использование: chmod [КЛЮЧ]... РЕЖИМ[,РЕЖИМ]… ФАЙЛ
           или:    chmod [КЛЮЧ]… ВОСЬМ-РЕЖИМ ФАЙЛ…
    ...
    
    Для упрощенного аналога РЕЖИМ указывать в формате, который используется в выводе ls -l:
    > ls -l /etc/passwd
    -rw-r--r-- 1 root root 3435 авг 27 18:13 /etc/passwd
    
    Т.е. ./mychmod 0755 файл или ./mychmod -rwxr-xr-x файл.
  5. Создайте собственный аналог функции ftw() (рекурсивный обход файловой системы с вызовом callback-функции).