Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
- char *
- litLigne (FILE * p_file)
- {
- if (!p_file)
- exit (EXIT_FAILURE);
- char *buffer = NULL;
- char c;
- int i = 1;
- do
- {
- buffer = realloc (buffer, sizeof (char) * (i + 1));
- fread (&c, sizeof (char), 1, p_file);
- buffer[i - 1] = c;
- buffer[i] = '\0';
- i++;
- }
- while (c != '\n' && !feof (p_file));
- buffer[i - 2] = '\0';
- return buffer;
- }
- void
- executeTrieur (char *nomFich, int taille, int *tab)
- {
- char **argv = malloc (sizeof (char *) * (taille + 3));
- argv[0] = "trieur";
- argv[1] = nomFich;
- char *strTaille = malloc (sizeof (char) * 12);
- sprintf (strTaille, "%d", taille);
- argv[2] = strTaille;
- for (int i = 0; i < taille; i++)
- {
- argv[i + 3] = malloc (sizeof (char) * 12);
- sprintf (argv[3 + i], "%d", tab[i]);
- }
- execv ("./trieur", argv);
- }
- void
- trieEnParallele (int *tab1, int taille1, int *tab2, int taille2)
- {
- pid_t pid1, pid2;
- char *fich1 = "fich1";
- char *fich2 = "fich2";
- while (fopen (fich1, "w") == 0 && fopen (fich2, "w") == 0)
- {
- }
- pid1 = fork ();
- if (pid1 == 0)
- {
- executeTrieur (fich1, taille1, tab1);
- exit (1);
- }
- pid2 = fork ();
- if (pid2 == 0)
- {
- executeTrieur (fich2, taille2, tab2);
- exit (2);
- }
- wait (NULL);
- int *tabA;
- int *tabE;
- tabA = (int *) malloc (sizeof (int) * taille1);
- tabE = (int *) malloc (sizeof (int) * taille2);
- for (int i = 0; i < taille1; i++)
- {
- tabA[i] = atoi (litLigne (fopen(fich1,"r")));
- }
- for (int j = 0; j < taille2; j++)
- {
- tabE[j] = atoi (litLigne (fopen(fich2,"r")));
- }
- }
- void main ()
- {
- int tab[5] = { 1, 12, 5, 97, 3 };
- executeTrieur ("fich", 5, tab);
- }
- // pid_t pid1, pid2;
- // int i, i1, i2;
- // pid1= fork();
- // if(pid1 == 0){
- // printf("Fils a = %d\n", getpid());
- // exit (1);
- // }
- // pid2= fork();
- // if(pid2 == 0){
- // printf("Fils a = %d\n", getpid());
- // exit (8);
- // }
- // i1 = wait(&i);
- // printf("le pid du fils recu par le pere = %d, valeur de exit = %d \n" , i1, (int)(i>>8));
- // i2 = wait(&i);
- // printf("le pid du fils recu par le pere = %d, valeur de exit = %d \n" , i2, (int)(i>>8));
- // exit(0);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement