From 7a2e313a2070e314b8bfe5e50c138e4c2b142bf0 Mon Sep 17 00:00:00 2001 From: apio Date: Wed, 12 Oct 2022 18:04:27 +0200 Subject: [PATCH] init: demo execv() --- apps/Makefile | 2 +- apps/src/init.c | 12 +++++++++++- apps/src/sym.c | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 apps/src/sym.c diff --git a/apps/Makefile b/apps/Makefile index c27455de..97187f7e 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -1,4 +1,4 @@ -APPS := init +APPS := init sym APPS_DIR := $(LUNA_ROOT)/apps APPS_SRC := $(APPS_DIR)/src diff --git a/apps/src/init.c b/apps/src/init.c index 9360023f..a6774a03 100644 --- a/apps/src/init.c +++ b/apps/src/init.c @@ -117,7 +117,17 @@ int main() if (fclose(config) < 0) { perror("fclose"); } - printf("\n\nPress any key to restart.\n"); + sleep(2); + + printf("\n\nPress any key to restart.\n\n"); + + sleep(2); + + if (execv("/bin/sym", NULL) < 0) + { + perror("execv"); + return 1; + } return 0; } diff --git a/apps/src/sym.c b/apps/src/sym.c new file mode 100644 index 00000000..d5ed3927 --- /dev/null +++ b/apps/src/sym.c @@ -0,0 +1,35 @@ +#include +#include + +int main() +{ + FILE* syms = fopen("/sys/moon.sym", "r"); + if (!syms) + { + perror("fopen"); + return 1; + } + + char buf[1025]; + + if (fseek(syms, 8000, SEEK_SET) < 0) + { + perror("fseek"); + return 1; + } + + size_t nread = fread(buf, 1024, 1, syms); + if (ferror(syms)) + { + perror("fread"); + return 1; + } + + buf[nread] = 0; + + printf("%s\n", strchr(buf, '\n') + 1); + + fclose(syms); + + return 0; +} \ No newline at end of file