00001
00002
00003 #include "types.h"
00004 #include "stat.h"
00005 #include "user.h"
00006 #include "fcntl.h"
00007
00008 char *argv[] = { "sh", 0 };
00009
00010 int
00011 main(void)
00012 {
00013 int pid, wpid;
00014
00015 if(open("console", O_RDWR) < 0){
00016 mknod("console", 1, 1);
00017 open("console", O_RDWR);
00018 }
00019 dup(0);
00020 dup(0);
00021
00022 for(;;){
00023 printf(1, "init: starting sh\n");
00024 pid = fork();
00025 if(pid < 0){
00026 printf(1, "init: fork failed\n");
00027 exit();
00028 }
00029 if(pid == 0){
00030 exec("sh", argv);
00031 printf(1, "init: exec sh failed\n");
00032 exit();
00033 }
00034 while((wpid=wait()) >= 0 && wpid != pid)
00035 printf(1, "zombie!\n");
00036 }
00037 }