In GNU/Linux ed in generale in ogni sistema unix-like la posizione nel file è espressa da un intero positivo, rappresentato dal tipo off_t, il problema è che alcune delle funzioni usate per il riposizionamento sugli stream originano dalle prime versioni di Unix, in cui questo tipo non era ancora stato definito, e che in altri sistemi non è detto che la posizione su un file venga sempre rappresentata con il numero di caratteri dall'inizio (ad esempio in VMS può essere rappresentata come numero di record, più l'offset rispetto al record corrente).
Tutto questo comporta la presenza di diverse funzioni che eseguono sostanzialmente le stesse operazioni, ma usano parametri di tipo diverso. Le funzioni tradizionali usate per il riposizionamento della posizione in uno stream sono fseek e rewind i cui prototipi sono:
Sposta la posizione nello stream secondo quanto specificato tramite offset e whence.
Riporta la posizione nello stream all'inizio del file.
L'uso di fseek è del tutto analogo a quello di lseek per i file descriptor, ed i parametri, a parte il tipo, hanno lo stesso significato; in particolare whence assume gli stessi valori già visti in sez. 6.2.3. La funzione restituisce 0 in caso di successo e -1 in caso di errore. La funzione rewind riporta semplicemente la posizione corrente all'inizio dello stream, ma non esattamente equivalente ad una fseek(stream, 0L, SEEK_SET) in quanto vengono cancellati anche i flag di errore e fine del file.
Per ottenere la posizione corrente si usa invece la funzione ftell, il cui prototipo è:
Legge la posizione attuale nello stream stream.
La funzione restituisce la posizione corrente, o -1 in caso di fallimento, che può esser dovuto sia al fatto che il file non supporta il riposizionamento che al fatto che la posizione non può essere espressa con un long int
Queste funzioni esprimono tutte la posizione nel file come un long int. Dato che (ad esempio quando si usa un filesystem indicizzato a 64 bit) questo può non essere possibile lo standard POSIX ha introdotto le nuove funzioni fgetpos e fsetpos, che invece usano il nuovo tipo fpos_t, ed i cui prototipi sono:
Imposta la posizione corrente nello stream stream al valore specificato da pos.
Legge la posizione corrente nello stream stream e la scrive in pos.
Le funzioni ritornano 0 in caso di successo e -1 in caso di errore.
In Linux, a partire dalle glibc 2.1, sono presenti anche le due funzioni fseeko e ftello, che sono assolutamente identiche alle precedenti fseek e ftell ma hanno argomenti di tipo off_t anziché di tipo long int.