Проектирование мультиклиентского сервера с вилками - PullRequest
1 голос
/ 01 декабря 2019

Я пытаюсь создать многопользовательский сервер и хочу ограничить количество подключенных пользователей. В псевдокоде C-ish мой сервер выглядит так:

// binding and listening
bind(...);
listen(...);
while (1) {
   int sockfd = accept(...);
   numConnections++;
   if (numConnections > MAX_NUMBER_OF_CONNECTIONS) {
      numConnections--;
      continue;
   }
   pid = fork();
   if (pid == 0) {
      // do my server stuff
      // stuff...
      // done
      numConnections--;
   } else {
      close(...);
   }
}

У меня проблемы с пониманием процесса форка;в частности, я не уверен, как обращаться с numConnections, так как не могу уменьшить его, когда дочерний процесс отключается (дочерний процесс открывает копию программы, верно?). Как мне это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...