C - les Sockets Unix - Non-bloquant lire

Je suis en train de faire un simple client-serveur programme de chat. Sur le côté client je spin-off d'un autre thread pour lire toutes les données entrantes à partir du serveur. Le problème est, je veux gracieusement mettre fin à cette deuxième thread quand une personne se connecte à partir du thread principal. J'ai essayé d'utiliser une variable partagée 'running' pour mettre fin à, problème est, le support de lecture() la commande est un blocage de la commande, donc si je fais tout(running == 1), le serveur doit renvoyer quelque chose avant de lire la retourne et la condition du while peut encore être vérifiée. Je suis à la recherche d'une méthode (avec les communes, les sockets unix seulement) pour en faire un non-blocage de lire, fondamentalement, une certaine forme de peek (), je peux vérifier en permanence la boucle pour voir si je suis fait.

Le thread de lecture en boucle est ci-dessous, pour l'instant il n'a pas de mutex pour les variables partagées, mais j'ai l'intention d'ajouter que, plus tard, ne vous inquiétez pas! 😉

void *serverlisten(void *vargp)
{
    while(running == 1)
    {
        read(socket, readbuffer, sizeof(readbuffer));
        printf("CLIENT RECIEVED: %s\n", readbuffer);
    }
    pthread_exit(NULL);
}

OriginalL'auteur will | 2011-11-12