e9f8a405d07894479be8acbed12d7f43a9205c09
[lunaix-os.git] / lunaix-os / usr / init / init.c
1 #include <errno.h>
2 #include <fcntl.h>
3 #include <lunaix/lunaix.h>
4 #include <stdio.h>
5 #include <unistd.h>
6
7 int
8 main(int argc, const char** argv)
9 {
10     int err = 0;
11
12     if ((err = open("/dev/tty", 0)) < 0) {
13         syslog(2, "fail to open tty (%d)\n", errno);
14         return 0;
15     }
16
17     if ((err = dup(err)) < 0) {
18         syslog(2, "fail to setup tty i/o (%d)\n", errno);
19         return 0;
20     }
21
22     printf("(%p) user space!\n", (void*)main);
23
24     if ((err = symlink("/usr", "/mnt/lunaix-os/usr"))) {
25         syslog(2, "symlink /usr:/mnt/lunaix-os/usr (%d)\n", errno);
26         return 0;
27     }
28
29     pid_t pid;
30     if (!(pid = fork())) {
31         err = execve("/usr/bin/signal_demo", NULL, NULL);
32         printf("fail to execute (%d)\n", errno);
33         _exit(err);
34     }
35
36     waitpid(pid, &err, 0);
37
38     if (err) {
39         printf("shell exit abnormally (%d)", err);
40     }
41
42     return 0;
43 }