X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/45e1f8b055043e54be35462852ab6649d634da7c..2a49908006b177c4d6354309333d06b1b96e4887:/lunaix-os/usr/init/init.c diff --git a/lunaix-os/usr/init/init.c b/lunaix-os/usr/init/init.c new file mode 100644 index 0000000..7e1785a --- /dev/null +++ b/lunaix-os/usr/init/init.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include + +int +main(int argc, const char** argv) +{ + int err = 0; + + if ((err = open("/dev/tty", 0)) < 0) { + syslog(2, "fail to open tty (%d)\n", errno); + return 0; + } + + if ((err = dup(err)) < 0) { + syslog(2, "fail to setup tty i/o (%d)\n", errno); + return 0; + } + + printf("(%p) user space!\n", (void*)main); + + if ((err = symlink("/usr", "/mnt/lunaix-os/usr"))) { + syslog(2, "symlink /usr:/mnt/lunaix-os/usr (%d)\n", errno); + return 0; + } + + pid_t pid; + if (!(pid = fork())) { + err = execve("/usr/sh", NULL, NULL); + printf("fail to execute (%d)\n", errno); + _exit(err); + } + + waitpid(pid, NULL, 0); + + return 0; +} \ No newline at end of file