1*40348dd8Szwb0x00 #include <stdio.h> 2*40348dd8Szwb0x00 #include <unistd.h> 3*40348dd8Szwb0x00 #include <fcntl.h> 4*40348dd8Szwb0x00 main()5*40348dd8Szwb0x00int main() { 6*40348dd8Szwb0x00 int fd = open("/history_commands.txt", O_RDONLY); 7*40348dd8Szwb0x00 if (fd < 0) { 8*40348dd8Szwb0x00 perror("Failed to open file"); 9*40348dd8Szwb0x00 return 1; 10*40348dd8Szwb0x00 } 11*40348dd8Szwb0x00 12*40348dd8Szwb0x00 int new_fd = 777; 13*40348dd8Szwb0x00 int rt = dup3(fd, new_fd, O_CLOEXEC); 14*40348dd8Szwb0x00 if (rt < 0) { 15*40348dd8Szwb0x00 perror("Failed to duplicate file descriptor with flags"); 16*40348dd8Szwb0x00 } 17*40348dd8Szwb0x00 18*40348dd8Szwb0x00 char buffer[100]; 19*40348dd8Szwb0x00 int bytes_read = read(new_fd, buffer, sizeof(buffer)); 20*40348dd8Szwb0x00 if (bytes_read < 0) { 21*40348dd8Szwb0x00 perror("Failed to read data"); 22*40348dd8Szwb0x00 return 1; 23*40348dd8Szwb0x00 } 24*40348dd8Szwb0x00 25*40348dd8Szwb0x00 printf("Data:\n %.*s\n", bytes_read, buffer); 26*40348dd8Szwb0x00 27*40348dd8Szwb0x00 close(fd); 28*40348dd8Szwb0x00 close(new_fd); 29*40348dd8Szwb0x00 return 0; 30*40348dd8Szwb0x00 }