#include #include #include #include int main() { if (getpid() != 1) { fprintf(stderr, "init should be started as PID 1\n"); return 1; } printf("Welcome to Luna!\n\n"); msleep(200); pid_t child = fork(); if (child < 0) { perror("fork"); return 1; } if (child == 0) { execv("/bin/sh", NULL); perror("execv"); return 1; } pid_t result; for (;;) { while ((result = wait(NULL)) == 0) // No child has exited yet { msleep(100); } if (result == child) { return 0; } } }