Человек хочет чтобы ему разработали многопоточный сервер такого типа-1.конфиг файл (формат не важен, можно использовать уже готовый парсер): - задаем кол-во fork, которые нужно запустить - юзер от имени которого должны работать fork - путь к лог файлу - путь к рабочей директории - кол-во памяти которую нужно расшарить - список портов и протоколов, которые нужно использовать с параметрами этого протокола (буффер). например: type=tcp port=81 recvbuf=1024 sendbuf=1024 backlog=100 deferred=1 application=testtcp type=udp port=81 recvbuf=1024 sendbuf=1024 acklog=100 deferred=1 application=testudp - возможность добавления других параметров
2. основной процесс: - устанавливает директорию - открывает лог файлы - парсит конфиг файл - открывает порты - выделяет расшаренную память - запускает потомков - следит за тем, что бы при смерти потомка запускался новый - ждет сигнал на выход - ждем сигнал на переоткрытие лог файла
3. остальные процессы: - ждет сигнал на переоткрытие лог файлов (который им может быть послан напрямую или из основного процесса) - обработка соединений и данных (используем epoll / kqueue) - для каждого соединения нужен некий объект который хранит о нем информацию, первое что там нужно это очередь принятых данных и очередь на отправку - очередь на отправку автоматически отправляется, когда она есть - так же нужна некая пустая функция которая будет обрабатывать пришедшие данные (сейчас это может быть просто echo) в зависимости от типа приложения.
4. в лог пишем следующую информацию: - запуск - открытие портов - прием подключением - разрыв подлючения - любые ошибки (вкл нехватка памяти) Вопрос-сколько взять с него?