Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. #include <sys/types.h>
  2. #include <sys/wait.h>
  3. #include <unistd.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. char *
  8. litLigne (FILE * p_file)
  9. {
  10. if (!p_file)
  11. exit (EXIT_FAILURE);
  12.  
  13. char *buffer = NULL;
  14. char c;
  15. int i = 1;
  16.  
  17. do
  18. {
  19. buffer = realloc (buffer, sizeof (char) * (i + 1));
  20. fread (&c, sizeof (char), 1, p_file);
  21. buffer[i - 1] = c;
  22. buffer[i] = '\0';
  23. i++;
  24. }
  25. while (c != '\n' && !feof (p_file));
  26.  
  27. buffer[i - 2] = '\0';
  28. return buffer;
  29. }
  30.  
  31. void
  32. executeTrieur (char *nomFich, int taille, int *tab)
  33. {
  34. char **argv = malloc (sizeof (char *) * (taille + 3));
  35. argv[0] = "trieur";
  36. argv[1] = nomFich;
  37. char *strTaille = malloc (sizeof (char) * 12);
  38. sprintf (strTaille, "%d", taille);
  39. argv[2] = strTaille;
  40.  
  41.  
  42. for (int i = 0; i < taille; i++)
  43. {
  44. argv[i + 3] = malloc (sizeof (char) * 12);
  45. sprintf (argv[3 + i], "%d", tab[i]);
  46. }
  47.  
  48.  
  49. execv ("./trieur", argv);
  50.  
  51. }
  52.  
  53. void
  54. trieEnParallele (int *tab1, int taille1, int *tab2, int taille2)
  55. {
  56. pid_t pid1, pid2;
  57. char *fich1 = "fich1";
  58. char *fich2 = "fich2";
  59.  
  60. while (fopen (fich1, "w") == 0 && fopen (fich2, "w") == 0)
  61. {
  62. }
  63.  
  64. pid1 = fork ();
  65. if (pid1 == 0)
  66. {
  67. executeTrieur (fich1, taille1, tab1);
  68. exit (1);
  69. }
  70.  
  71. pid2 = fork ();
  72. if (pid2 == 0)
  73. {
  74. executeTrieur (fich2, taille2, tab2);
  75. exit (2);
  76. }
  77.  
  78. wait (NULL);
  79.  
  80. int *tabA;
  81. int *tabE;
  82. tabA = (int *) malloc (sizeof (int) * taille1);
  83. tabE = (int *) malloc (sizeof (int) * taille2);
  84.  
  85. for (int i = 0; i < taille1; i++)
  86. {
  87. tabA[i] = atoi (litLigne (fopen(fich1,"r")));
  88. }
  89. for (int j = 0; j < taille2; j++)
  90. {
  91. tabE[j] = atoi (litLigne (fopen(fich2,"r")));
  92. }
  93.  
  94.  
  95.  
  96.  
  97. }
  98.  
  99.  
  100. void main ()
  101. {
  102. int tab[5] = { 1, 12, 5, 97, 3 };
  103. executeTrieur ("fich", 5, tab);
  104. }
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111. // pid_t pid1, pid2;
  112. // int i, i1, i2;
  113.  
  114. // pid1= fork();
  115. // if(pid1 == 0){
  116. // printf("Fils a = %d\n", getpid());
  117. // exit (1);
  118. // }
  119. // pid2= fork();
  120. // if(pid2 == 0){
  121.  
  122. // printf("Fils a = %d\n", getpid());
  123. // exit (8);
  124.  
  125. // }
  126. // i1 = wait(&i);
  127. // printf("le pid du fils recu par le pere = %d, valeur de exit = %d \n" , i1, (int)(i>>8));
  128.  
  129. // i2 = wait(&i);
  130. // printf("le pid du fils recu par le pere = %d, valeur de exit = %d \n" , i2, (int)(i>>8));
  131. // exit(0);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement