¿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).