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 64-bit version of tell64(). The filedes value is the file descriptor returned by a successful call to open() .

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

Last modified: 2013-12-23

comments powered by Disqus