#include <unistd.h> ssize_t pwrite64 (int file_descriptor, const void *buf, size_t nbyte, off64_t offset);Service Program Name: QP0LLIB1
The pwrite64() 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.
The offset will also be ignored if file_descriptor refers to a descriptor obtained using the open() function with O_APPEND specified.
pwrite64() is enabled for large files. It is capable of operating on files larger than 2GB minus 1 byte as long as the file has been opened by either of the following:
For additional information about parameters, authorities, and error conditions, see pwrite()--Write to Descriptor with Offset.
See Code disclaimer information for information pertaining to code examples.
The following example writes a specific number of bytes to a file:
#define _LARGE_FILE_API #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #define mega_string_len 1000000 main() { char *mega_string; int file_descriptor; int ret; off64_t off=5; char fn[]="write.file"; if ((mega_string = (char*) malloc(mega_string_len+off)) == NULL) perror("malloc() error"); else if ((file_descriptor = creat64(fn, S_IWUSR)) < 0) perror("creat64() error"); else { memset(mega_string, '0', mega_string_len); if ((ret = pwrite64(file_descriptor, mega_string, mega_string_len, off)) == -1) perror("pwrite64() error"); else printf("pwrite64() wrote %d bytes at offset %d\n", ret, off); if (close(file_descriptor)!= 0) perror("close() error"); if (unlink(fn)!= 0) perror("unlink() error"); } free(mega_string); }
Output:
pwrite64() wrote 1000000 bytes at offset 5
Top | UNIX-Type APIs | APIs by category |