Appel à accept() bloqué alors que le fd a été retourné par select()

Appel à accept() bloqué alors que le fd a été retourné par select() - C - Programmation

Marsh Posté le 28-05-2008 à 11:46:45    

Bonjour,  
 
Un serveur tout simple à bloquer lors qu'un client inconnue c'est connecté.
Lors ce que j'ai tué le processus (kill -USR1), j'étais dans la function accept() qui est revenue avec l'erreur "Interrupted system call" ).
 
Le serveur est constitue d'une boucle infine after un appel à 'select()' suivi d'un appel à accept si le port de connection a été solicité. De plus le processus ne prenait pas de CPU quand je l'ai tué.
 

Code :
  1. for(;;)
  2. {
  3.   bcopy(&Fds, readfds, sizeof(Fds));
  4.   select(FD_SETSIZE, &readfs, &writefds, &exceptfds, &timeout);
  5.   if (FD_ISSET(Connection_socket, &readfds))
  6.    {
  7.      communication_socket = accept(Connection_socket);
  8.      if (communication_socket == -1)
  9.        {
  10.           printf("accept failed (%s)\n", sys_errlist[errno]);
  11.           print_stack();
  12.           exit(1);
  13.        }
  14.      .....
  15.    }
  16. }


Quelqu'un aurait une idée sur les causes possibles, et du meilleur moyen d'y reagir?
 
Merci d'avance  
 

Reply

Marsh Posté le 28-05-2008 à 11:46:45   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed