Home | History | Annotate | Download | only in gdbserver_tests
      1 #include <stdlib.h>
      2 #include <stdio.h>
      3 #include <errno.h>
      4 #include <unistd.h>
      5 #include <sys/wait.h>
      6 void 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 }
     33 int main()
     34 {
     35    fork_chain (15);
     36    return 0;
     37 }
     38