stella_650
13-06-2008, 12:40
Ciao a tutti..HO un problema relativo ad un esercizio da svolgere in C unix.
In particolare, mi sorge un dubbio su una particolare parte del problema relativa alla read e alla write che devo eseguire rispettivamente per leggere e scrivere un numero alla volta all'interno di un file. Questa problematica č introdotta in un contesto pių ampio in cui si richiede la sincronizzazione tra padre e figlio per farsė che rispettivamente scrivano e leggano dal file nel modo descritto.
Posto che la parte relativa alla sincronizzazione sia corretta, mi sorge il dubbio che la parte sulla read e sulla write lo sia meno...c'č qualcuno che mi puo' aiutare?
CODICE RELATIVO AD UN'OPERAZIONE READ AND WRITE DI UN SOLO NUMERO
int buff[100];
//Riempio il buffer con i valori
buff[0]=1;
i=1;
while(i<N){
printf("da 1 in poi i vale %d\n",i);
buff[i]=i+1;
printf("valore di buff %d\n",buff[i]);
i++;
}
//QUESTA PARTE LA FA IL FIGLIO ...
fd=open("Numeri.txt",O_RDWR);
if(nread=read(fd,buff,1)<0) //provato anche con <0
{
perror("Errore sulla read\n");
printf("read error %d\n",nread);
}
close(fd);
//CODICE PADRE...
fdes=open("Numeri.txt",O_RDWR);
if(wd=write(fdes,buff,1)<0)
{
perror("Errore sulla write\n");
printf("Write error...%d\n",wd);
}
close(fdes);
In particolare, mi sorge un dubbio su una particolare parte del problema relativa alla read e alla write che devo eseguire rispettivamente per leggere e scrivere un numero alla volta all'interno di un file. Questa problematica č introdotta in un contesto pių ampio in cui si richiede la sincronizzazione tra padre e figlio per farsė che rispettivamente scrivano e leggano dal file nel modo descritto.
Posto che la parte relativa alla sincronizzazione sia corretta, mi sorge il dubbio che la parte sulla read e sulla write lo sia meno...c'č qualcuno che mi puo' aiutare?
CODICE RELATIVO AD UN'OPERAZIONE READ AND WRITE DI UN SOLO NUMERO
int buff[100];
//Riempio il buffer con i valori
buff[0]=1;
i=1;
while(i<N){
printf("da 1 in poi i vale %d\n",i);
buff[i]=i+1;
printf("valore di buff %d\n",buff[i]);
i++;
}
//QUESTA PARTE LA FA IL FIGLIO ...
fd=open("Numeri.txt",O_RDWR);
if(nread=read(fd,buff,1)<0) //provato anche con <0
{
perror("Errore sulla read\n");
printf("read error %d\n",nread);
}
close(fd);
//CODICE PADRE...
fdes=open("Numeri.txt",O_RDWR);
if(wd=write(fdes,buff,1)<0)
{
perror("Errore sulla write\n");
printf("Write error...%d\n",wd);
}
close(fdes);