1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| lseek(fd,0L,SEEK_SET);
lockf(fd,0L,F_LOCK);
if (read(fd,&entete,sizeof(entete))!=sizeof(entete))
{
entete.plect = sizeof(entete);
entete.pecr = sizeof(entete);
lseek(fd,0L,SEEK_SET);
write(fd,&entete,sizeof(entete));
}
if (entete.plect == entete.pecr)
{
/* pas de données */
entete.plect = entete.pecr = sizeof(entete);
lseek(fd,0L,SEEK_SET);
write(fd,&entete,sizeof(entete));
lseek(fd,0L,SEEK_SET);
lockf(fd,0L,F_ULOCK);
return ...;
}
else
{
lseek(fd,entete.plect,SEEK_SET); /* edit: manquait 3ème paramètre */
if (read(fd,donnees,n)==n)
{
entete.plect += n;
lseek(fd,0L,SEEK_SET);
write(fd,&entete,sizeof(entete));
}
lseek(fd,0L,SEEK_SET);
lockf(fd,0L,F_ULOCK);
} |
Partager