У меня возникли проблемы с пониманием вилки при использовании сокетов. Я понимаю, что fork - это то, что вы можете обрабатывать несколько клиентов одновременно, но тогда я не уверен, что он должен использоваться в следующем сценарии:Вилка при программировании сокетов
Я создаю макет сервера P2P. У меня должен быть трекер и сверстник. Трекер обрабатывает соединения со всех сверстников. Когда одноранговый узел сначала подключается к трекеру, он отправляет список своих файлов трекеру, а затем трекер сохраняет все файлы в коллекции (включая IP-адреса) (коллекция имеет файлы со всех сверстников). Кроме того, если сверстник завершает работу, то трекер удаляет файлы этого сверстника из коллекции (те, которые содержат его IP-адрес). Трекер отправит любой peer весь список файлов, если он получит команду «получить файлы».
Здесь я не понимаю, как я могу использовать fork (или если это даже необходимо), потому что если я буду использовать fork, то, когда клиент выйдет, я удалю его файлы из списка, но так как его в своем собственном процессе , как будет изменен список вне дочернего процесса?
Похоже, вы пытаетесь выполнить задачу, которая слишком продвинута для вашего набора навыков. Но если вы это сделаете, я настоятельно рекомендую начать с архитектуры цикла poll, используя один процесс. –