Improve.
[pintos-anon] / grading / userprog / multi-oom.c
1 #include <debug.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <syscall.h>
5
6 int
7 main (int argc UNUSED, char *argv[]) 
8 {
9   char child_cmd[128];
10   pid_t child_pid;
11   int n;
12
13   n = atoi (argv[1]);
14   if (n == 0)
15     n = atoi (argv[0]);
16     
17   printf ("(multi-oom) begin %d\n", n);
18
19   snprintf (child_cmd, sizeof child_cmd, "multi-oom %d", n + 1);
20   child_pid = exec (child_cmd);
21   if (child_pid != -1) 
22     {
23       int code = wait (child_pid);
24       if (code != n + 1)
25         printf ("(multi-oom) fail: wait(exec(\"%s\")) returned %d\n",
26                 child_cmd, code);
27     }
28   else if (n < 15)
29     printf ("(multi-oom) fail: exec(\"%s\") returned -1 "
30             "after only %d recursions\n",
31             child_cmd, n);
32   
33   printf ("(multi-oom) end %d\n", n);
34   return n;
35 }