Задание: Написать классический статик-сервер для отдачи контента с диска.
Требования:
- поддержка запросов GET и HEAD;
- поддержка статусов 200, 403, 404, 405;
- выставление content-type в зависимости от типа файла (поддержка html, css, js, png, jpg, jpeg, swf, gif);
- корректная передача файлов размером в 100Мб;
- обработка ошибки в случае выхода адреса за корневую директорию сервера;
- реализация логгера;
- реализация архитектуры prefork + pselect().
Средства реализации:
- ОС на базе ядра Linux (версия ядра - 6.5.13)
- C (pselect, socket и т.д.)
Примечание. По ошибке реализовал архитектуру fork вместо prefork: каждому клиенту - по обслуживающему процессу (prefork подразумевает использование пула конечного числа дочерних процессов для обслуживания клиентов). Тем не менее, работа была успешно защищена.