add test for pread, pwrite
This commit is contained in:
		
							parent
							
								
									d5e8d43e7b
								
							
						
					
					
						commit
						0a8e84f4de
					
				| @ -12,6 +12,7 @@ int main(int argc, const char* argv[]) { | ||||
|     const char* write_msg = "Hello World\n"; | ||||
|     char read_buf[128] = {0}; | ||||
| 
 | ||||
|     // write
 | ||||
|     flags = O_WRONLY | O_CREAT| O_TRUNC; | ||||
|     mode = 00666; | ||||
|     if ((fd = open(file_name, flags, mode)) < 0) { | ||||
| @ -24,6 +25,7 @@ int main(int argc, const char* argv[]) { | ||||
|     } | ||||
|     close(fd); | ||||
| 
 | ||||
|     // read
 | ||||
|     flags = O_RDONLY; | ||||
|     if ((fd = open(file_name, flags)) < 0) { | ||||
|         printf("ERROR: failed to open a file for read\n"); | ||||
| @ -40,14 +42,14 @@ int main(int argc, const char* argv[]) { | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     flags = O_RDWR; | ||||
| 	// writev
 | ||||
|     flags = O_WRONLY | O_CREAT| O_TRUNC; | ||||
|     if ((fd = open(file_name, flags)) < 0) { | ||||
|         printf("ERROR: failed to open a file for read and write\n"); | ||||
|         printf("ERROR: failed to open a file for write\n"); | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     const char* iov_msg[2] = {"hello ", "world!"}; | ||||
|     const char* iov_msg[2] = {"hello_", "world!"}; | ||||
|     struct iovec iov[2]; | ||||
|     for(int i=0; i<2; ++i) { | ||||
|         iov[i].iov_base = (void*)iov_msg[i]; | ||||
| @ -58,22 +60,46 @@ int main(int argc, const char* argv[]) { | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     if ((offset = lseek(fd, 0, SEEK_SET)) != 0) { | ||||
|     // pwrite
 | ||||
| 	if ((len = pwrite(fd, " ", 1, 5)) != 1) { | ||||
| 		printf("ERROR: failed to pwrite to the file\n"); | ||||
| 	} | ||||
| 
 | ||||
| 	close(fd); | ||||
| 
 | ||||
| 	flags = O_RDONLY; | ||||
| 	if ((fd = open(file_name, flags)) < 0) { | ||||
| 		printf("ERROR: failed to open a file for read\n"); | ||||
| 		return -1; | ||||
| 	} | ||||
| 
 | ||||
| 	// lseek
 | ||||
|     if ((offset = lseek(fd, 2, SEEK_SET)) != 2) { | ||||
|         printf("ERROR: failed to lseek the file\n"); | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     // readv
 | ||||
|     iov[0].iov_base = read_buf; | ||||
|     iov[0].iov_len = 3; | ||||
|     iov[1].iov_base = read_buf + 5; | ||||
|     iov[1].iov_len = 20; | ||||
|     if ((len = readv(fd, iov, 2)) != 12) { | ||||
|     if ((len = readv(fd, iov, 2)) != 10) { | ||||
|         printf("ERROR: failed to read vectors from the file\n"); | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     if (memcmp(read_buf, "hel", 3) != 0 | ||||
|         || memcmp(read_buf + 5, "lo world!", 9) != 0) { | ||||
|     if (memcmp(read_buf, "llo", 3) != 0 | ||||
|         || memcmp(read_buf + 5, " world!", 7) != 0) { | ||||
|         printf("ERROR: the message read from the file is not as it was written\n"); | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     // pread
 | ||||
|     if ((len = pread(fd, read_buf, sizeof(read_buf) - 1, 4)) != 8) { | ||||
| 		printf("ERROR: failed to pread from the file\n"); | ||||
| 	} | ||||
| 	if (memcmp(read_buf, "o world!", 8) != 0) { | ||||
| 		printf("ERROR: the message read from the file is not as it was written\n"); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user