| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 
 |  
 
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
 
 
int main(void){
 
    pid_t kind2;
    pid_t kind3;
    pid_t kind4;
    pid_t kind5;
    pid_t kind6;
 
    kind2 = fork();
 
    if(kind2 < 0) {
      fprintf(stderr, "cannot fork, error %d\n", errno);
      exit(EXIT_FAILURE);      
    }
 
    if(kind2 == 0)
    {
	printf("[PID: %d, PPID: %d ] i'm Process 2\n", getpid(), getppid() );       
 
	kind3 = fork();
	if(kind3 < 0)
	{
	  fprintf(stderr, "cannot fork, error %d\n", errno);
	  exit(-3);      
	}
	if(kind3 == 0)
	{
	  printf("[PID: %d, PPID: %d ] i'm Process 3\n", getpid(), getppid() );
	  exit(32);
	}
	/*if(kind3 > 0)
	{
	  printf("[PID: %d, PPID: %d ] i'm  Process 1\n", getpid(), getppid() );
	}*/
 
	exit(2);
    }  
 
    if(kind2 > 0){
      printf("[PID: %d, PPID: %d ] i'm Process 1\n", getpid(), getppid() );
 
      kind4 = fork();
      if(kind4 < 0)
      {
	fprintf(stderr, "cannot fork, error %d\n", errno);
	exit(-4);      
      }
      if(kind4 == 0)
      {
	printf("[PID: %d, PPID: %d ] i'm Process 4\n", getpid(), getppid() );
 
	kind5 = fork();
	if(kind5 < 0)
	{
	  fprintf(stderr, "cannot fork, error %d\n", errno);
	  exit(-5);      
	}
	if(kind5== 0)
	{
	  printf("[PID: %d, PPID: %d ] i'm Process 5\n", getpid(), getppid() );
	  exit(52);
	}
	else if(kind5 > 0){
	  printf("[PID: %d, PPID: %d ] i'm Process 4\n", getpid(), getppid() );
 
	  kind6 = fork();
	  if(kind6 < 0)
	  {
	    fprintf(stderr, "cannot fork, error %d\n", errno);
	    exit(-6);      
	  }
	  if(kind6 == 0)
	  {
	    printf("[PID: %d, PPID: %d ] i'm Process 6\n", getpid(), getppid() );
	    exit(62);
	  }
 
	}
 
	exit(42);
      }
      exit(1);
    }
 
    return 0;
} |