mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-18 16:26:31 +00:00
1
user/apps/test_dup3/.gitignore
vendored
Normal file
1
user/apps/test_dup3/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
test_dup3
|
20
user/apps/test_dup3/Makefile
Normal file
20
user/apps/test_dup3/Makefile
Normal file
@ -0,0 +1,20 @@
|
||||
ifeq ($(ARCH), x86_64)
|
||||
CROSS_COMPILE=x86_64-linux-musl-
|
||||
else ifeq ($(ARCH), riscv64)
|
||||
CROSS_COMPILE=riscv64-linux-musl-
|
||||
endif
|
||||
|
||||
CC=$(CROSS_COMPILE)gcc
|
||||
|
||||
.PHONY: all
|
||||
all: main.c
|
||||
$(CC) -static -o test_dup3 main.c
|
||||
|
||||
.PHONY: install clean
|
||||
install: all
|
||||
mv test_dup3 $(DADK_CURRENT_BUILD_DIR)/test_dup3
|
||||
|
||||
clean:
|
||||
rm test_dup3 *.o
|
||||
|
||||
fmt:
|
30
user/apps/test_dup3/main.c
Normal file
30
user/apps/test_dup3/main.c
Normal file
@ -0,0 +1,30 @@
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
int main() {
|
||||
int fd = open("/history_commands.txt", O_RDONLY);
|
||||
if (fd < 0) {
|
||||
perror("Failed to open file");
|
||||
return 1;
|
||||
}
|
||||
|
||||
int new_fd = 777;
|
||||
int rt = dup3(fd, new_fd, O_CLOEXEC);
|
||||
if (rt < 0) {
|
||||
perror("Failed to duplicate file descriptor with flags");
|
||||
}
|
||||
|
||||
char buffer[100];
|
||||
int bytes_read = read(new_fd, buffer, sizeof(buffer));
|
||||
if (bytes_read < 0) {
|
||||
perror("Failed to read data");
|
||||
return 1;
|
||||
}
|
||||
|
||||
printf("Data:\n %.*s\n", bytes_read, buffer);
|
||||
|
||||
close(fd);
|
||||
close(new_fd);
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user