bof
This commit is contained in:
		
							parent
							
								
									a7ea5df855
								
							
						
					
					
						commit
						cfa25ea7bf
					
				
					 1 changed files with 43 additions and 43 deletions
				
			
		| 
						 | 
				
			
			@ -11,49 +11,49 @@
 | 
			
		|||
 | 
			
		||||
int  main(int argc, char **argv)
 | 
			
		||||
{
 | 
			
		||||
int p[2],pid;
 | 
			
		||||
	int p[2],pid;
 | 
			
		||||
 | 
			
		||||
if(argc < 2)
 | 
			
		||||
{
 | 
			
		||||
    perror("erreur argument");
 | 
			
		||||
    exit(-1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if(pipe(p) == -1)
 | 
			
		||||
{
 | 
			
		||||
    perror("erreur creation tube ");
 | 
			
		||||
    exit(-2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pid=fork();     // creation du proc. fils 
 | 
			
		||||
 | 
			
		||||
switch(pid )
 | 
			
		||||
{
 | 
			
		||||
    case -1: 
 | 
			
		||||
	    perror("fork1");
 | 
			
		||||
        exit(-3);
 | 
			
		||||
	    break;
 | 
			
		||||
 | 
			
		||||
    case 0 : 	// le  fils traite la commande
 | 
			
		||||
 | 
			
		||||
	    close(1);
 | 
			
		||||
	    dup(p[1]); // on recupere forcement le desc. 1 (+ petit possible)	
 | 
			
		||||
	    close(p[0]);
 | 
			
		||||
	    close(p[1]);
 | 
			
		||||
	    execvp(argv[1],argv+1);
 | 
			
		||||
 	    printf("\n*** erreur exec. impossible!");
 | 
			
		||||
	    exit(-4);
 | 
			
		||||
   
 | 
			
		||||
    default:	//  le pere  fait le "more"
 | 
			
		||||
	
 | 
			
		||||
   	    close(0);       	// on ferme entree standard
 | 
			
		||||
	    dup(p[0]);     // on connecte l'entree standard au tube 
 | 
			
		||||
	    close(p[0]);    // pour blocage en lecture
 | 
			
		||||
            close(p[1]);
 | 
			
		||||
  	    execlp("more","more",0);   // si on saisit More par exemple  -> message erreur
 | 
			
		||||
            printf("\nerreur execution more \n");
 | 
			
		||||
	    exit(-5);
 | 
			
		||||
}
 | 
			
		||||
exit(0);  // on ne vient jamais ici
 | 
			
		||||
	if(argc < 2)
 | 
			
		||||
	{
 | 
			
		||||
		perror("erreur argument");
 | 
			
		||||
		exit(-1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(pipe(p) == -1)
 | 
			
		||||
	{
 | 
			
		||||
		perror("erreur creation tube ");
 | 
			
		||||
		exit(-2);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pid=fork();     // creation du proc. fils 
 | 
			
		||||
 | 
			
		||||
	switch(pid )
 | 
			
		||||
	{
 | 
			
		||||
		case -1: 
 | 
			
		||||
			perror("fork1");
 | 
			
		||||
			exit(-3);
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case 0 : 	// le  fils traite la commande
 | 
			
		||||
 | 
			
		||||
			close(1);
 | 
			
		||||
			dup(p[1]); // on recupere forcement le desc. 1 (+ petit possible)	
 | 
			
		||||
			close(p[0]);
 | 
			
		||||
			close(p[1]);
 | 
			
		||||
			execvp(argv[1],argv+1);
 | 
			
		||||
			printf("\n*** erreur exec. impossible!");
 | 
			
		||||
			exit(-4);
 | 
			
		||||
	   
 | 
			
		||||
		default:	//  le pere  fait le "more"
 | 
			
		||||
		
 | 
			
		||||
			close(0);       	// on ferme entree standard
 | 
			
		||||
			dup(p[0]);     // on connecte l'entree standard au tube 
 | 
			
		||||
			close(p[0]);    // pour blocage en lecture
 | 
			
		||||
			close(p[1]);
 | 
			
		||||
			execlp("more","more",0);   // si on saisit More par exemple  -> message erreur
 | 
			
		||||
			printf("\nerreur execution more \n");
 | 
			
		||||
			exit(-5);
 | 
			
		||||
	}
 | 
			
		||||
	exit(0);  // on ne vient jamais ici
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue