///************************************************************/ ///* */ ///* p_pipe_arg : - Demande de descripteurs de pipe-line, */ ///* - Demande de fork, */ ///* - PERE : recupere en parametres du main */ ///* les N mots qui correspondent a la */ ///* commande qui doit s'executer en lisant */ ///* dans le pipe-line, */ ///* - FILS : recupere en parametres du main */ ///* les M mots suivants qui correspondent */ ///* a la commande qui doit s'executer en */ ///* lisant dans le pipe-line */ ///* s'executer vers le pipe-line. */ ///* EXEMPLE : p_pipe_arg who wc <====> who | wc */ ///************************************************************/ ///* - Version 1 : N = 1 et M = 1 (equivalent ls | wc) */ ///* - Version 2 : N = 1 et M = 1 ET */ ///* Le comportement du pere (ci-dessus) est */ ///* est fait dans un deuxieme fils. */ ///* - Version 3 : N = 2 et M = 2 ET */ ///* Le comportement du pere (ci-dessus) est */ ///* est fait dans un petit-fils. */ ///* */ ///* Ne pas utiliser d'initialisation dynamique de tableau */ ///************************************************************/ # include # include # include # define READ 0 # define WRITE 1 # define ENTREE 0 # define SORTIE 1 int main (int argc, char* argv[]) { int resultat ; if (argc != 3) fprintf (stderr, "SYNTAXE : %s commande1 commande2\n", argv[0]); { ///**************** PERE ******************/ ///* PARTIE A COMPLETER */ ///****************************************/ resultat = fork(); if (resultat < 0) { perror("ERREUR FORK"); exit (2) ; } else if (resultat == 0) { ///**************** FILS ******************/ ///* PARTIE A COMPLETER */ ///****************************************/ } else { /**************** PERE ******************/ /* PARTIE A COMPLETER */ /****************************************/ } } }