fix wait bug in init

This commit is contained in:
rsc 2007-08-08 08:39:23 +00:00
parent f8f7fcbebd
commit 39c84ccf48
2 changed files with 4 additions and 7 deletions

4
BUGS
View file

@ -11,10 +11,6 @@ main.c:
cpus[0] -> cpus[bcpu] cpus[0] -> cpus[bcpu]
init.c:
should while(wait() >= 0);
not just wait();
proc.c: proc.c:
comment at top of scheduler() should say comment at top of scheduler() should say
via longjmp back to the scheduler via longjmp back to the scheduler

7
init.c
View file

@ -11,7 +11,7 @@ char *sh_args[] = { "sh", 0 };
int int
main(void) main(void)
{ {
int pid; int pid, wpid;
if(open("console", O_RDWR) < 0){ if(open("console", O_RDWR) < 0){
mknod("console", T_DEV, 1, 1); mknod("console", T_DEV, 1, 1);
@ -21,6 +21,7 @@ main(void)
dup(0); // stderr dup(0); // stderr
for(;;){ for(;;){
puts("init: starting sh\n");
pid = fork(); pid = fork();
if(pid < 0){ if(pid < 0){
puts("init: fork failed\n"); puts("init: fork failed\n");
@ -30,8 +31,8 @@ main(void)
exec("sh", sh_args); exec("sh", sh_args);
puts("init: exec sh failed\n"); puts("init: exec sh failed\n");
exit(); exit();
} else {
wait();
} }
while((wpid=wait()) >= 0 && wpid != pid)
;
} }
} }