Middleware, development tools, realtime operating system
software and services for superior embedded design


Home
QNX Community Resources
Developer Support
QNX Documentation Library
QNX Developer Support

QNX Developer Support

QNX Software Systems
Developer Resources
Blogs
Board support packages
Foundry27 projects
Forums
Hardware support listing
Online video tutorials
Product documentation
Technical Articles

[Previous] [Contents] [Index] [Next]

pread(), pread64()

Read from a file without moving the file pointer

Synopsis:

#include <unistd.h>

ssize_t pread(int filedes,
              void *buff,
              size_t nbytes,
              off_t offset );

ssize_t pread64( int filedes,
                 void *buff,
                 size_t nbytes,
                 off64_t offset );

Arguments:

filedes
The descriptor of the file that you want to read from.
buff
A pointer to a buffer where the function can store the data that it reads.
nbytes
The number of bytes that you want to read.
offset
The desired position inside the file.

Library:

libc

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

Description:

The pread() function performs the same action as read(), except that it reads from a given position in the file without changing the file pointer.

The pread() function reads up to the maximum offset value that can be represented in an off_t for regular files. An attempt to perform a pread() on a file that's incapable of seeking results in an error.

The pread64() function is a 64-bit version of pread().

Returns:

The number of bytes actually read, or -1 if an error occurred (errno is set).

Errors:

EAGAIN
The O_NONBLOCK flag is set for the file descriptor, and the process would be delayed in the read operation.
EBADF
The file descriptor, fildes, isn't a valid file descriptor open for reading.
EINTR
The read operation was interrupted by a signal, and either no data was transferred, or the resource manager responsible for that file does not report partial transfers.
EIO
A physical I/O error occurred (for example, a bad block on a disk). The precise meaning is device-dependent.
ENOSYS
The pread() function isn't implemented for the filesystem specified by filedes.

Classification:

pread() is POSIX 1003.1 XSI; pread64() is Large-file support

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

See also:

close(), creat(), dup(), dup2(), errno, fcntl(), lseek(), open(), pipe(), pwrite(), read(), readblock(), readv(), select(), write(), writeblock(), writev()


[Previous] [Contents] [Index] [Next]