Salve,
Ragazzi sto seguendo all'università un corso su programmazione linux ma ho un professore che durante le ore di laboratorio scompare dal laboratorio e dice: "fate voi".
Io per quanto mi riguarda uso già linux da tempo, però sulla programmazione non ho molte esperienze.
Lo stesso proff, che dovrebbe impararci le basi su linux e farci scrivere dei programmi, usa sul suo portatile una macchina virtuale per far partire Fedora e poi pretende che gli altri la installano XD. Avrei bisogno di qualche aiuto per ulteriori chiarimenti, perchè penso che fra di voi ci sia gente più professionale.
Mi stavo cimentando nell'uso dell'lseek, cioè una funzione che stabilisce la posizione corrente nel file volendo automentadone la dimensione di quest'ultimo.
Ora stavo provando a spostarmi di posizione in un file con l'aiuto dell'lseek anche nel caso in cui il file fosse vuoto e eventualmente scriverci qualcosa dallo standard input. Con questa chiamata: lseek(fd,15,SEEK_CUR) in pratica effettua la somma tra 15+SEEK_CUR (posizione corrente) non dovrebbe cmq far posizionare il cursore più avanti di qualche riga?
Ad Esempio qui perchè non mi fa scrivere qualche riga più avanti?
codice:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
int main(void) {
int c,size,n,fd,buf[90];
if((fd=open("scrittura",O_CREAT| O_RDWR, 0644))<0)
printf("Errore apertura file");
size=read(STDIN_FILENO,buf,90);
if((lseek(fd,10,SEEK_END))<0)
printf("Errore lseek");
write(fd,buf,size);
printf("\nla read ha letto:%d\n\n",size-1);
close(fd);
exit(0);
}
Se apro il file con O_APPEND posso cambiare la posizione di scrittura con lseek?
Se apro il file con O_TRUNC mi dovrebbe cancellare tutto il contenuto?
lseek(fd,10,SEEK_END) ----> quando uso come secondo parametro un valore diverso da 0 nel documento mi stampa caratteri strani come se fossero buchi, ad esempio con il valore 10 mi mette dieci apici davanti alla stringa che ho inserito come input: ^@^@^@^@^@^@^@HTML.it. Perchè fa così? Non dovrebbe semplicemente lasciare scrivere più in la il testo inserito?