Determine the current file position
#include <unistd.h> off_t tell( int filedes ); off64_t tell64( int filedes );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
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().
You can use the returned value in conjunction with lseek() to reset the current file position.
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.
#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
tell() is QNX 4; tell64() is QNX Neutrino
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |