Write into a file without changing the file pointer
#include <unistd.h>
ssize_t pwrite( int filedes,
                const void* buff,
                size_t nbytes,
                off_t offset );
ssize_t pwrite64( int filedes,
                  const void* buff,
                  size_t nbytes,
                  off64_t offset );
- filedes
 
- The file descriptor for the file you want to write in.
 
- buff
 
- A pointer to a buffer that contains the data you want to write.
 
- nbytes
 
- The number of bytes to write.
 
- offset
 
- The desired position inside the file.
 
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
The pwrite() function performs the same action as
write(),
except that it writes into a given position without changing
the file pointer.
The pwrite64() function is a 64-bit version of pwrite().
The number of bytes actually written, or -1 if an error occurred 
(errno is set).
- EAGAIN
    
 
- The O_NONBLOCK flag is set for the file descriptor, and 
      the process would be delayed in the write operation.
  
 
- EBADF
    
 
- The file descriptor, fildes, isn't a valid file descriptor
      open for writing.
  
 
- EFBIG
  
 
- One of the following occurred:
    
- An attempt was made to write a file that exceeds the maximum file size
      or the process's file size limit, and there was no room for any bytes
      to be written.
    
 
- The file is a regular file, nbytes is greater than 0,
      and the starting position is greater than or equal to the offset
      maximum established in the open file description associated with
     fildes.
    
 
   
- EINTR
    
 
- The write operation was interrupted by a signal, and either no data
      was transferred, or the resource manager responsible for that file 
     doesn't report partial transfers.
  
 
- EINVAL
  
 
- The offset argument is invalid; the value is negative.
    The file pointer remains unchanged.
  
 
- EIO
  
 
- One of the following occurred:
    
- The process is a member of a background process group attempting to
      write to its controlling terminal, TOSTOP is set,
      the process is neither ignoring nor blocking SIGTTOU,
      and the process group of the process is orphaned.
    
 
- A physical I/O error occurred (for example, a bad block on a disk). The
      precise meaning is device-dependent.
    
 
   
- ENOBUFS
  
 
- Insufficient resources were available in the system to perform the
    operation.
  
 
- ENOSPC
    
 
- There's no free space remaining on the device containing the file.
	
 
- ENOSYS
	
 
- The pwrite() function isn't implemented for the filesystem specified
		by filedes.
  
 
- ENXIO
  
 
- One of the following occurred:
    
- A request was made of a nonexistent device, or the request was outside
      the capabilities of the device.
    
 
- A hangup occurred on the STREAM being written to. 
    
 
   
- EPIPE
    
 
- An attempt was made to write to a pipe (or FIFO) that isn't open for
      reading by any process. A SIGPIPE signal is also sent to 
      the process.
      
      
  
 
- ERANGE
  
 
- The transfer request size was outside the range supported by the
    STREAMS file associated with fildes. 
  
 
- ESPIPE
  
 
- The fildes is associated with a pipe or FIFO. 
    The file pointer remains unchanged.
 
pwrite() is
POSIX 1003.1 XSI;
pwrite64() is
Large-file support
| Safety: |  | 
| Cancellation point | 
    Yes | 
| Interrupt handler | 
    No | 
| Signal handler | 
    Yes | 
| Thread | 
    Yes | 
close(),
creat(),
dup(),
dup2(),
errno,
fcntl(),
lseek(),
open(),
pipe(),
pread(),
read(),
readv(),
select(),
write(),
writev()