Consider the following program include include include int m
     Consider the following program:  #include   #include   #include   int main () {pid_t pidl=0, pid2=0;  int i=3;  pid1=fork();  if(pidl != 0) {printf(\"%d\ \", ++i);  pid2 = fork();  if(pid2 != 0) {waitpid(pid1, NULL, 0);  printf(%d\ \", ++i);  waitpid(pid2,NULL, 0);  printf(\"%d\ \", ++i);  exit(0);}  printf(\"%d\ \",i);}  printf(\"%d\ \", ++i);}  How many processes are created during the execution of this program? Explain.  List all the possible outputs of the program 
  
  Solution
a) When the first fork() is executed , 2 processes are created. For the second pid2 again 2 more will be created.
b)The outcome for the following program would be:
4
5
4
5
6
The reason is as follows:
1.the first printf statement has ++i. since the initial value of i is 3 its first incremented and then printed.
2.the second printf statement prints 5 as the value gets incremented as before.
3.Here value is 4 because new process created has value of i as 3 which is then incremented.
4.The value of i is 5 which is then printed at the end of the statement.It is again incremented due to ++i thus printing the value 6.

