Comment utiliser read () pour lire les données jusqu'à la fin du fichier?

Je suis en train de lire des données binaires dans un programme C avec read() mais EOF test ne fonctionne pas. Au lieu de cela, il continue de fonctionner à jamais la lecture du dernier bit du fichier.

#include <stdio.h>
#include <fcntl.h>
int main() {

  //writing binary numbers to a file
  int fd = open("afile", O_WRONLY | O_CREAT, 0644);
  int i;
  for (i = 0; i < 10; i++) {
    write(fd, &i, sizeof(int));
  }
  close(fd);

  //trying to read them until EOF
  fd = open("afile", O_RDONLY, 0);
  while (read(fd, &i, sizeof(int)) != EOF) {
    printf("%d", i);
  }
  close(fd);
}

source d'informationauteur sekmet64