Ciao a tutti![]()
Ho questo problema a cui non trovo soluzione!
Io ho una coda di 2 elementi (socket) che una volta piena mi prende i due socket, azzera la coda e avvia una procedura per farli comunicare.
Il problema è che non so bene come gestirla perchè l'idea che mi è venuta ha problemi quando una volta che è terminata la procedura creata con la fork mi ritorna e mi crea inconsistenza nella coda.
Ecco il codice:
Grazie mille dell'attenzionecodice:void waitPlayer(){ int nClient = 0; int q[2]; fprintf(stderr, "Inizio ascolto.\n"); while(true){ if(nClient == 2){ nClient = 0; sPlayer1 = q[0]; sPlayer2 = q[1]; //Fork avvio gioco int pid_partita; switch (pid_partita = fork()) { case -1: perror("Errore nell'esecuzione della fork."); exit(1); case 0: controlPlayers(sPlayer1,sPlayer2); break; } } /* gestione delle connessioni dei clienti */ int player_len = sizeof(player); if ((q[nClient] = accept(sock, (struct sockaddr *)&player, &player_len)) < 0) { perror("accepting connection"); exit(3); } nClient++; fprintf(stderr, "Nuovo Player Connesso C:%d.\n",nClient); } }![]()

Rispondi quotando