tell(), tell64()

Determine the current file position

Synopsis:

#include <unistd.h>

off_t tell( int filedes );

off64_t tell64( int filedes );

Arguments:

filedes
The file descriptor of the file whose position you want to get.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The tell() and tell64() functions determine the current file position for any subsequent read() or write() operation (that is, any subsequent unbuffered file operation). The tell64() function is a large-file support version of tell64(). The filedes value is the file descriptor returned by a successful call to open().

Note: In QNX Neutrino 6.6 or later, the large-file support functions and data types appear in the name space only if you define _LARGEFILE64_SOURCE when you compile your code. For more information, see "Classification" in What's in a Function Description?

You can use the returned value in conjunction with lseek() to reset the current file position.

Returns:

The current file position, expressed as the number of bytes from the start of the file, or -1 if an error occurs (errno is set). A value of 0 indicates the start of the file.

Examples:

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>

char buffer[]
    = { "A text record to be written" };

int main( void )
  {
    int filedes;
    int size_written;

    /* open a file for output          */
    /* replace existing file if it exists */
    filedes = open( "file",
        O_WRONLY | O_CREAT | O_TRUNC,
        S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP );

    if( filedes != -1 ) {

      /* print file position */
      printf( "%ld\n", tell( filedes ) );

      /* write the text */
      size_written = write( filedes, buffer,
                sizeof( buffer ) );

      /* print file position */
      printf( "%ld\n", tell( filedes ) );

      /* close the file */
      close( filedes );
    }
    return EXIT_SUCCESS;
  }

produces the output:

0
28

Classification:

tell() is QNX 4; tell64() is QNX Neutrino

Safety:  
Cancellation point Yes
Interrupt handler No
Signal handler Yes
Thread Yes