xref: /DragonOS/user/apps/test_dup3/main.c (revision 40348dd8d5a008ecc9eb3aab931933e4eba0e6da)
1*40348dd8Szwb0x00 #include <stdio.h>
2*40348dd8Szwb0x00 #include <unistd.h>
3*40348dd8Szwb0x00 #include <fcntl.h>
4*40348dd8Szwb0x00 
main()5*40348dd8Szwb0x00 int 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 }