« Risposta #1 il: 16 Gennaio 2019, 08:13:53 »
int fd; // valore restituito dalla funzione:
// fd=open("miofile",O_RDWR,0660);
long n; // spostarsi di n bytes a partire dal "mode"
// (io utilizzo sempre 0)
int mode; // valori possibili:
// SEEK_SET=0 SEEK_CUR=1 SEEK_END=2offset = lseek(fd, n, mode);
dove fd è il file descriptor sul quale si desidera muovere il puntatore,
n rappresenta il numero di byte di spostamento a partire dal mode.
Se n è negativo lo spostamento del puntatore avviene all’indietro invece che in avanti.
Il parametro mode indica a partire da quale posizione iniziare a muovere il puntatore:
se mode vale 0 significa che ci si deve muovere a partire dall’inizio del file,
Se vale 1 a partire dalla posizione corrente
e infine se vale 2 a partire dalla fine.
Il valore di ritorno della lseek contiene la posizione corrente del puntatore
dopo lo spostamento.
Allora:whereamI= lseek(fd,0,SEEK_CUR); // restituisce la posizione corrente
myfilelength=lseek(fd,0,SEEK_END); // restituisce la dimensione del file in byte
i=67; lseek(fd,i,SEEK_SET); // posiziona il cursore al sessantottesimo byte (si conta dallo 0)
Ultimamente, col passaggio a 64 bits la funzione è stata rimpiazzata
da lseek64:
https://linux.die.net/man/3/lseek64
« Ultima modifica: 18 Gennaio 2019, 14:06:40 da splugenbrau »
Registrato