blob: b5d60f0931633953905f022da99dbe4d1108fbb5 [file] [log] [blame]
sewardj1ac21102011-06-15 21:30:55 +00001#include <stdlib.h>
2#include <stdio.h>
3#include <errno.h>
4#include <unistd.h>
5#include <sys/wait.h>
6void fork_chain(int level)
7{
8 int pid;
9
10 printf ("forking level %d\n", level);
11 fflush (stdout);
12 pid = fork();
13 if (pid == -1) {
14 perror("fork");
15 exit(1);
16 }
17
18 if (pid == 0) {
19 if (level > 0) {
20 fork_chain (level - 1);
21 }
22 } else {
23 int ret;
24 int status;
25 while((ret = waitpid(pid, &status, 0)) != pid) {
26 if (errno != EINTR) {
27 perror("waitpid");
28 exit(1);
29 }
30 }
31 }
32}
33int main()
34{
sewardjf5194b32011-07-04 22:00:41 +000035 fork_chain (15);
sewardj1ac21102011-06-15 21:30:55 +000036 return 0;
37}