Reviewed-on: #1 |
||
---|---|---|
.vscode | ||
include | ||
.gitattributes | ||
.gitignore | ||
Makefile | ||
config.h | ||
file_tree.save | ||
handler.h | ||
main.c | ||
old_main.c | ||
readme.md | ||
save.dat | ||
structs.c | ||
structs.h | ||
work1 |
readme.md
Лабораторная работа №3
Необходимо реализовать простую файловую систему на основе дерева. В файловой системе есть две сущности:
- Файлы. Считается, что содержимого файлов нет. Атрибутами файла являются дата создания, название и расширение файла.
- Папки. Папки могут хранить в себе файлы, а также другие папки. У папок есть следующие атрибуты: дата создания и количество сущностей, лежащих в папке.
Программа должна представлять из себя консольное приложение, эмитирующее консоль ОС Linux. Минимум, должны быть доступны следующие команды:
- cd – переход по указанному пути;
- ls – просмотр текущей директории. Также должен быть доступен запуск команды с флагом –l, выводящим атрибуты сущностей директории;
- rm – удаление файлов. Должна поддерживать флаг –r для рекурсивного удаления папки и ее содержимого;
- mkdir – создание папки;
- touch – создание файла;
- find – поиск файлов по указанному пути.
Файловая система должна в режиме реального времени хранится в файле (все изменения мгновенно заносятся в файл). Структуру хранения выбрать самостоятельно, главное – оптимизация по памяти.
Для тестов файловой системы и показа ее на защите лабораторной работы необходимо, чтобы глубина дерева была не меньше 15, степень дерева не меньше 30, общее количество сущностей в файловой системе не меньше 100.
Будет плюсом:
- Реализация других команд, помимо основных (заранее обговорить какие);
- Поддержка регулярных выражений в командах rm и find.