From 23a17fae003fa4df9539f31ca09c1ba28dd461e1 Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Tue, 28 Jan 2025 12:26:53 +0200 Subject: [PATCH] userspace/init: dummy code Signed-off-by: EnderIce2 --- Userspace/apps/sys/init/init.c | 46 ++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/Userspace/apps/sys/init/init.c b/Userspace/apps/sys/init/init.c index 67d77b1a..ebe31903 100644 --- a/Userspace/apps/sys/init/init.c +++ b/Userspace/apps/sys/init/init.c @@ -19,9 +19,51 @@ #include #include #include +#include +#include -int main(int, char *[], char *[]) +void StartProcess(const char *program, char *const argv[]) { - printf("Hello, World!\n"); + pid_t pid = fork(); + if (pid == 0) + { + execvp(program, argv); + perror("execvp"); + exit(EXIT_FAILURE); + } + else if (pid < 0) + { + perror("fork"); + exit(EXIT_FAILURE); + } +} + +void ReapZombies() +{ + while (1) + { + int status; + pid_t pid = waitpid(-1, &status, WNOHANG); + if (pid <= 0) + break; + } +} + +int main() +{ + printf("init starting...\n"); + + char *shellArgs[] = {"/bin/sh", NULL}; + StartProcess("/bin/sh", shellArgs); + + // char *dummyServiceArgs[] = {"/usr/bin/dummy_service", NULL}; + // StartProcess("/usr/bin/dummy_service", dummyServiceArgs); + + while (1) + { + ReapZombies(); + sleep(1); + } + return 0; }