00001
00002
00003
00004 #include "types.h"
00005 #include "stat.h"
00006 #include "user.h"
00007
00008 void
00009 printf(int fd, char *s, ...)
00010 {
00011 write(fd, s, strlen(s));
00012 }
00013
00014 void
00015 forktest(void)
00016 {
00017 int n, pid;
00018
00019 printf(1, "fork test\n");
00020
00021 for(n=0; n<1000; n++){
00022 pid = fork();
00023 if(pid < 0)
00024 break;
00025 if(pid == 0)
00026 exit();
00027 }
00028
00029 if(n == 1000){
00030 printf(1, "fork claimed to work 1000 times!\n");
00031 exit();
00032 }
00033
00034 for(; n > 0; n--){
00035 if(wait() < 0){
00036 printf(1, "wait stopped early\n");
00037 exit();
00038 }
00039 }
00040
00041 if(wait() != -1){
00042 printf(1, "wait got too many\n");
00043 exit();
00044 }
00045
00046 printf(1, "fork test OK\n");
00047 }
00048
00049 int
00050 main(void)
00051 {
00052 forktest();
00053 exit();
00054 }