¿Tenedor antes o después de aceptar conexiones?

El siguiente fragmento de código crea 4 procesos, todos compartiendo el mismo conector de escucha.

¿Hay algún peligro en hacer esto? ¿Debo tener siempre un proceso de escucha y una bifurcación después de que se acepten las conexiones, de la manera convencional?

for (p = 0; p < 3; p++) {
  pid = fork();
  if (pid == 0) break;
}
while (1) { 
  unsigned int clientlen = sizeof(echoclient);
  /* Wait for client connection */
  if ((clientsock = 
       accept(serversock, (struct sockaddr *) &echoclient,
              &clientlen)) < 0) { 
    die("Failed to accept client connection");
  } 
  fprintf(stdout, "Process No. %d - Client connected: %s\n",
                  p,
                  inet_ntoa(echoclient.sin_addr));
  handle_client(clientsock);
}

(Entiendo que forking después de aceptar permite que un programa realice un proceso por conexión. Estoy jugando con proto-hilos y varias cosas asíncronas, así que solo estoy buscando un proceso por núcleo).

Respuestas a la pregunta(1)

Su respuesta a la pregunta