Un petit exo en systeme d'exploitation

Bonjour,
a tous alors on a commencer cette semaine des tp en systeme d'exploitation et on nous a donner des exo a resoudre
donc il y a une exercice que je comprend meme ce qu'il dit
j 'aimerai bien si quelqu'un me l'explique


Exercice 3
Ecrire un programme C qui prend en paramètre une série de fichiers source .c, les compile chacun séparément et simultanément puis édite les liens pour produire un exécutable. Ce programme doit :
• lancer un processus fils pour chacun des noms de fichiers passés en paramètre;
• chaque fils doit exécuter le programme gcc -c sur le fichier dont il s'occupe;
• le père doit attendre la terminaison de tous ses fils;
• si l'ensemble des fils ont terminés sans erreur, le père réalise l'édition de liens en exécutant cc sur les fichiers .o produits par les fils.
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. Tu est en quoi? Etude de quoi?
    0
    1. C'est à base de fork, execlp ou execvp et waitpid
      http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/fork.2.html#toc5 ca va t'aider.

      Pour l'algo en gros c'est ca :
      (manque les traitements des noms de fichiers les sources xxx.c, yyy.c, les compilés xxx.o, yyy.o et l'executable zzz sans extention ou zzz.exe)

      1 boucle de lancement basée sur les argv du main
      pid_t   pid;
      pid = fork ();
      if (pid > 0) {
       /* Processus père      */
       /* Tu relève le no du process fils (stockage dans un tableau pids[x]=pid par exemple)*/
      } else if (pid == 0) {
       /* Processus fils      */
       ...
       execlp("gcc","-c",<nomdu source>); */
      } else {
       /* Traitement d'erreur pas pu lancer le process */
      }
      
      1 boucle de waitpid pour relever les résultats
      int status
      int errCount=0;
      waitpid(pid[x],&status,NULL)
      if(WEXITSTATUS(status)!=0){
       /* ca s'est mal passé */
       ...
       errCount++;
      }else{
       /* OK pour celui ci */
      }
      
      1 lancement de link identique à ci-dessus(fork & execvp &waitpid si tout OK (errCount==0)
      
      
      0
      1. svp treajui est ce que vous pouvez m'expliquer ce que fai se programme parcequ'on a meme pas fait le cours et franchement j'ai pas compris le but
        merci d'avance
        0