### 6.6 `fgetpos64`—record position in a large stream or file ¶

Synopsis

    #include <stdio.h>
    int fgetpos64(FILE *fp, _fpos64_t *pos);
    int _fgetpos64_r(struct _reent *ptr, FILE *fp,
        _fpos64_t *pos);

Description
Objects of type `FILE` can have a “position” that records how much of the file your program has already read. Many of the `stdio` functions depend on this position, and many change it as a side effect.

You can use `fgetpos64` to report on the current position for a file identified by fp that was opened by `fopen64`; `fgetpos` will write a value representing that position at `*pos`. Later, you can use this value with `fsetpos64` to return the file to this position.

In the current implementation, `fgetpos64` simply uses a character count to represent the file position; this is the same number that would be returned by `ftello64`.

Returns
`fgetpos64` returns `0` when successful. If `fgetpos64` fails, the result is `1`. Failure occurs on streams that do not support positioning or streams not opened via `fopen64`; the global `errno` indicates these conditions with the value `ESPIPE`.

Portability
`fgetpos64` is a glibc extension.

No supporting OS subroutines are required.