Создайте смоделированную файловую систему, которая полностью помещалась бы в отдельный обычный файл, сохраненный на диске. В этом дисковом файле должны содержаться каталоги, i-узлы, информация о свободных блоках, блоки файловых данных и т. д. по аналогии с рассмотренной на семинаре схемой ФС. Ваша программа должна воспринимать поступающие от пользователя команды на создание и удаление каталогов, создание, удаление и открытие файлов, чтение выбранного файла и записи его на диск, а также вывод содержимого каталога.
-
Программа должна быть написана на ЯП C
-
Наличие багов/вылетов etc недопустимо
В качестве единственного аргумента программа принимеат название файла, в котором хранится файловая система (если файла не существует, он создастся с чистой ФС нем).
Реализован псевдо-терминал, в котором доступны следующие команды:
-
exit
-- выйти из программы. -
ls
-- вывести список файлов текущей директории -
mkdir
-- создать поддиректорию (аргумент -- имя новой директории) -
cd
-- перейти в поддиректорию (аргумент -- имя поддиректории) -
touch
-- создать файл (аргумент -- имя файла) -
write
-- сделать запись в файл (аргументы: имя файла, контент) -
cat
-- вывести содержимое файла (аргумент -- имя файла) -
rm
-- удаление файла (если файл -- директория, рекурсивное удаление всего ее содержимого) -
upload
-- загрузка файлов в minifs из host-системы -
download
-- выгрузка файлов из minifs в host-систему