Я пытаюсь создать многопользовательский сервер и хочу ограничить количество подключенных пользователей. В псевдокоде 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
, так как не могу уменьшить его, когда дочерний процесс отключается (дочерний процесс открывает копию программы, верно?). Как мне это исправить?