Quando si utilizza il file O_WRONLY
flag da solo, apre il file per la scrittura, conserva il contenuto del file esistente e posiziona il puntatore del file all'inizio del file. Qualsiasi scrittura sovrascrive il contenuto esistente.
Se usi lseek
per riposizionare il puntatore del file, le successive scritture avverranno all'offset riposizionato.
Questo comportamento contrasta con O_TRUNC
che tronca il contenuto del file quando viene aperto, e con O_APPEND
che forza tutte le scritture a verificarsi alla fine del file.
Nessuno dei due.
-
Di default il file viene aperto con il cursore posizionato all'inizio. La scrittura sovrascrive i byte all'inizio del file.
-
O_TRUNC
fa sì che il file venga troncato se esiste. -
O_APPEND
fa sì che le scritture vengano aggiunte alla fine del file invece di sovrascriverle all'inizio. Questo flag è persistente. Se sposti il cursore altrove per leggere i dati, viene sempre riposizionato alla fine del file prima di ogni scrittura.
I flag sono ortogonali e non si escludono a vicenda. Puoi persino combinarli se desideri troncare inizialmente il file e assicurarti che tutte le scritture successive vengano sempre accodate.