70 lines
2.6 KiB
C
70 lines
2.6 KiB
C
|
///************************************************************/
|
||
|
///* */
|
||
|
///* 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 <stdio.h>
|
||
|
# include <stdlib.h>
|
||
|
# include <unistd.h>
|
||
|
|
||
|
# 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 */
|
||
|
/****************************************/
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|