#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h> // pour la fonction wait
#include <unistd.h> //pour les appels systeme comme fork, sleep.
#include <iostream.h>

int main()
{
 int choix;
 do
 {
 cout << "MENU" << endl;
 cout << "1: EXO 1" << endl;
 cout << "2: EXO 2" << endl;
 cout << "3: EXO 3" << endl;
 cout << "4: Sortie" << endl;
 cin>>choix;
 switch (choix){
	       case 1:{
	               int pid;
 		       unsigned int var=0;
                       switch (pid=fork()) {
  		                            case -1: perror ("fork()");exit(1);break; //perror renvoi un code erreur
		                            case 0: {
			        		     system("./info1");
		                		     system("ps -x");
			        		     cout <<"Processus courant"<< getpid() <<endl;
			                             var=sleep(10);//sleep()  endort  le  processus jusqu’à ce que nb_sec secondes se soient écoulées, ou jusqu’à ce qu’un signal non-ignoré soit reçu.
						     if (var==0)
						      { 
							cout << "OK effectuer : " << var << endl;
							break;
						      }
						     else
						       {
							 cout << "Pas Effectuer" << var << endl;
				                         break;
						       }
			                            }
	              			    default:{//on est dans le pere
      			                             wait (NULL); //attend la mort du fils.
			                             system("ps -x");
			                             cout <<"Processus pere"<< getppid()<<endl;
  			       			     puts ("pere fin traitement");
			       			     cin.get();
  			       			     break;
 			                            }
		                            }
					    break;
		      }

	       case 2:{
		       int pid;
 		       unsigned int var=0;
                       switch (pid=fork()) {
  		                            case -1: perror ("fork()");exit(1);break; //perror renvoi un code erreur
		                            case 0: {
			        		     system("./info1");
		                		     system("ps -x");
			        		     cout <<"Processus courant"<< getpid() <<endl;
						     wait (NULL);// Attente de la mort du pere
				                     break;
			                            }
	              			    default:{//on est dans le pere
			                             system("ps -x");
			                             cout <<"Processus pere"<< getppid()<<endl;
  			       			     puts ("pere fin traitement");
			       			     cin.get();
  			       			     break;
 			                            }
		                            }
	               break;
	              }

	       case 3:{
	               break;
		      }
	       case 4:return 0;
	       }
 }while (choix != 4);
 return 0;
}
