Salve a tutti qual è un possibile errore per cui la system call "read" non funziona?
questo è il codice
//Scrivere un programma C, chiamiamolo myedit.c, che ricevendo in input il nome di un file ed un intero x, si comporti nel seguente modo:
// 1)scriva sullo standard output gli ultimi x byte del file se il file già esiste , altrimenti crei il file con i permessi 644;
//2)legga dallo standard output altri dati che l'utente vuole inserire alla fine del file e li scriva in tale file
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]){
int fd,offset,y;
signed int x;
char buf[4];
if (argc!=3) {
printf("ERRORE : Numero parametri 3 --> eseguibile,nome file, intero x\n");
exit(0);
}//fine if
if( (fd=open(argv[1],O_WRONLY))>0){
printf("Il suo file descriptor è %d \n",fd);
x=atoi(argv[2]);
printf("aa2\n");
offset=lseek(fd,-x-1 ,SEEK_END);
printf("il nuovo valore di offset è %d \n",offset);
if( (read(fd,&buf,3)) <0) printf("ERRORE\n"); // qui da sempre errore
write(1,buf,x);
}
else {
printf("SOnO nell'else\n");
umask(0);
fd=creat("myedit", S_IRWXU|S_IXGRP|S_IXOTH);
printf("Il suo file descriptor all'atto della creazione è %d \n",fd);
}
lseek(fd, 1, SEEK_END);
printf(" DIGITARE CONTENUTO : \n");
read(1,&buf,4);
write(fd,&buf,4);
system("cat myedit");
return 0;
}//fine main