Mercurial > hg > Members > innparusu > xv6_rpi_port
comparison uprogs/forktest.c @ 0:c450faca55f4
Init
author | Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 22 Oct 2017 18:25:39 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c450faca55f4 |
---|---|
1 // Test that fork fails gracefully. | |
2 // Tiny executable so that the limit can be filling the proc table. | |
3 | |
4 #include "types.h" | |
5 #include "stat.h" | |
6 #include "user.h" | |
7 | |
8 #define N 1000 | |
9 | |
10 void | |
11 printf(int fd, char *s, ...) | |
12 { | |
13 write(fd, s, strlen(s)); | |
14 } | |
15 | |
16 void | |
17 forktest(void) | |
18 { | |
19 int n, pid; | |
20 | |
21 printf(1, "fork test\n"); | |
22 | |
23 for(n=0; n<N; n++){ | |
24 pid = fork(); | |
25 if(pid < 0) | |
26 break; | |
27 if(pid == 0) | |
28 exit(); | |
29 } | |
30 | |
31 if(n == N){ | |
32 printf(1, "fork claimed to work N times!\n", N); | |
33 exit(); | |
34 } | |
35 | |
36 for(; n > 0; n--){ | |
37 if(wait() < 0){ | |
38 printf(1, "wait stopped early\n"); | |
39 exit(); | |
40 } | |
41 } | |
42 | |
43 if(wait() != -1){ | |
44 printf(1, "wait got too many\n"); | |
45 exit(); | |
46 } | |
47 | |
48 printf(1, "fork test OK\n"); | |
49 } | |
50 | |
51 int | |
52 main(void) | |
53 { | |
54 forktest(); | |
55 exit(); | |
56 } |