produit_somme.c 1.38 KB
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>

int main(int argc, char * argv[]){
    if(argc != 3){
        return 1;
    }
    int fork1, fork2;
    if((fork1=fork())<0){
        perror("erreur exec du fork");
        exit(1);
    }
    if(fork1 == 0){
        if(execlp("./somme","somme",argv[1],argv[2],NULL)==-1){
            perror("echec execlp");
            exit(1);
        }  
    }
   
    else {
        if((fork2=fork())<0){
            perror("erreur exec du fork");
            exit(1);
        }
        if(fork2 == 0){
            sleep(2);
            if(execlp("./produit","produit",argv[1],argv[2],NULL)==-1){
                perror("echec execlp");
                exit(1);
            }  
        } 
        else{
            int r, pid;
            if((pid= wait(&r)) <0){
                perror("erreur exec du wait");
                exit(1);
            }else if(pid==fork1){
                printf("Somme effectuée\n");
            }else if(pid==fork2){
                printf("Produit effectuée\n");
            }
            
            if((pid= wait(&r)) <0){
                perror("erreur exec du wait");
                exit(1);
            }else if(pid==fork1){
                printf("Somme effectuée\n");
            }else if(pid==fork2){
                printf("Produit effectuée\n");
            }
         }
    }
    return 0;
}