Tube FIFO est toujours lisible dans le select()

En C pseudo-code:

while (1) {
    fifo = open("fifo", O_RDONLY | O_NONBLOCK);
    fd_set read;
    FD_SET(fifo, &read);
    select(nfds, &read, NULL, NULL, NULL);
}

Le processus dort déclenchée par select() jusqu'à ce qu'un autre processus écrit dans fifo. Par la suite, il sera toujours à trouver fifo comme un fichier lisible par descripteur.

Comment éviter ce problème (qui est, après fifo a été lu une fois, comment faire il faut trouver comme illisible jusqu'à ce qu'il obtient une autre écriture?)

Alors, que voulez-vous produire?

OriginalL'auteur Matoe | 2013-01-30