Fork Tree C Programs


I'm trying to create fork tree diagram, but still with no success. Here is my code:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

void procStatus(int level) {
   printf("L%d: PID[%d] (PPID[%d])\n", level, getpid(), getppid());
   fflush(NULL);
}

void levelFork(int *level) {
   if (fork() == 0)
      (*level)++;
   wait(NULL);
}

void main() {
   int level = 0;
   procStatus(level);
   levelFork(&level);
   procStatus(level);
}

I want to create like this picture below:

Fork Tree Diagram

And this is output look like:

Output

Any help would be appreciated.


Answers:


You need a way of specifying the max depth and then using that to fork new processes. Once you are done with the forking you can start the printing. The snippet below should work

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

void procStatus(int level) {
   printf("L%d: PID[%d] (PPID[%d])\n", level, getpid(), getppid());
   fflush(NULL);
}

void levelFork(int *level,int maxlevel) {
  int locallevel= *level;
   while(locallevel!=maxlevel){
      int pid = fork();
      if (pid  == 0){
         (*level)++; // childs level is higher
         levelFork(level,maxlevel);
         return;
      }
     locallevel++;
     wait(NULL);
   }
}

void main() {
        int level = 0;
        int maxlevel=3;

        levelFork(&level,maxlevel);
        procStatus(level);
}