Изучаю написание сетевого демона под линукс. Сейчас мой демон имеет структуру:
Код
...
sd = socket();
bind(sd, ... );
if ( listen(sd, 5) == -1)
{ ... }
for (;;) {
ns = accept(sd, ...);
pid=fork();
if (pid == 0) /* child */
{
close(sd);
...
recv();
...
close(ns);
exit(0); /* exit status of child */
}
close(ns); /* parent */
}
sd = socket();
bind(sd, ... );
if ( listen(sd, 5) == -1)
{ ... }
for (;;) {
ns = accept(sd, ...);
pid=fork();
if (pid == 0) /* child */
{
close(sd);
...
recv();
...
close(ns);
exit(0); /* exit status of child */
}
close(ns); /* parent */
}
Вопрос такой: при этой архитектуре будут ли у демона серьезные ограничения по числу одновременно обрабатываемых запросов? Если да, то что нужно менять в структуре приложения? Поможет ли здесь select()/poll() ?
Спасибо!