HISTORY. The pread() and pwrite() system calls were added to Linux in version 2.1. 60; the entries in the i386 system call table were added in 2.1.
The pwrite() function writes nbyte bytes from buf to the file associated with file_descriptor. The offset value defines the starting position in the file and the file pointer position is not changed.
Pread() works just like read() but reads from the specified position in the file without modifying the file pointer.
You would use it when you need to repeatedly read data at fixed offset, for example a database index that points to individual records in file, to save on seek() calls.
Basically use read() if your data is sequential or pread() if you know, or can calculate offset at which to read.
From this link,
The atomicity of pread enables processes or threads that share file descriptors to read from a shared file at a particular offset without using a locking mechanism that would be necessary to achieve the same result in separate lseek and read system calls. Atomicity is required as the file pointer is shared and one thread might move the pointer using lseek after another process completes an lseek but prior to the read.
Google gave me man pread
.
If you read()
twice, you get two different results, which shows that read()
advances in the file.
If you pread(
) twice, you get the same result, which shows that pread()
stays at the same point in the file.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With