Salve ragazzi, sto smadonnando con queste 3 funzioni..
ora vi posto il mio codice:
avevo pensato di aprire il file, di impostare il puntatore alla fine del file e di scrivere...codice:#include <sys/types.h> #include <stdio.h> #include <fcntl.h> #include <stdlib.h> #include <string.h> #include <errno.h> int main(){ int us; us = open("SharkServer/users.sxs", O_RDWR|O_CREAT, 0666); if(us == -1){ puts("Si è verificato un errore nell'apertura/creazione del file user.sxs\n"); exit(-1); } lseek(us, 0, 2); char text[128]; memset(text, '\0', 128); strcpy(text, "ciao\n"); write(us, text, 128); close(us); }
ma con il codice sopra ripostato, il sistema mi crea un file da 8GB(solo per ciao...)
OK, niente problemi, mi faccio coraggio e smanettando un po qua un po la, mi accorgo che la open puo prendere il parametro O_APPEND che in sostanza fa quello che dovrebbe fare lseek() anche se è troppo strano che lseek si comporti in questo modo..
perfetto, uso O_APPEND... tutto fila liscio come l'olio, fino a quando non mi serve di nuovo lseek...
infatti, dopo questa bella scrittura di ciao, volevo leggerlo, magari leggendo solo i primi 2 caratteri: 'ci'
quindi mi dico, uso lseek(us, 0, 0) e si riposizionera all'inizio del file e potro leggere i 2 caratteri...ma...
NIENTE DA FARE....in pratica lseek sembra non funzionare quando aggiungo O_APPEND e se tolgo O_APPEND ho il problema degli 8GB di file...
COSA DIAVOLO SBAGLIO?