Системное программирование, файлы и каталоги
Все программы должны соответствовать принятому стилю кодирования.
- В начале файла - заголовок с автором и лицензией;
- Перед каждой функцией - комментарий с описанием функции и аргументов;
- Текст программы разбит на "абзацы" с комментарием перед каждым "абзацем".
Все возвращаемые функциями значения должны проверяться. В случае ошибок выполнение программы должно аварийно завершаться с выдачей сообщения об ошибке и кодом завершения EXIT_FAILURE.
4. Файлы и каталоги
- Создайте программу, которая будет получать один аргумент командной строки - путь к объекту файловой системы, и выводить для указанного объекта всю информацию, которую можно получить с помощью функции stat(). Должны корректно обрабатываться все варианты типа объекта (файл, каталог, символьное устройство, блочное устройство, конвейер, символическая ссылка или сокет).
- Создайте собственный упрощенный аналог утилиты du:
> du --help Использование: du [КЛЮЧ]… [ФАЙЛ]… ... Суммирует использование дискового пространства каждого ФАЙЛА, с каталогами ...
Для упрощенного аналога достаточно выдавать использование дискового пространства для всех файлов, указанных в командной строке. Работать с каталогами не требуется. - Создайте собственный аналог утилиты readlink:
> readlink --help Использование: readlink [КЛЮЧ]… ФАЙЛ… Печатает значение символьной ссылки или каноническое имя файла ...
- Создайте собственный упрощенный аналог утилиты 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 файл. - Создайте собственный аналог функции ftw() (рекурсивный обход файловой системы с вызовом callback-функции).