Un petit exo en systeme d'exploitation
legend1
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
legend1 Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
legend1 Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- Comment ouvrir un fichier exo?
- Comment ouvrir un fichier epub ? - Guide
- Comment ouvrir un fichier bin ? - Guide
- Comment ouvrir un fichier dat - Guide
- Comment ouvrir un fichier docx ? - Guide
- Comment réduire la taille d'un fichier - Guide
4 réponses
t'es en BTS info ou DUT ou quelque chose comme ca ?
va poser ta question ici, ils pourront ptr te repondre... https://www.developpez.com/
va poser ta question ici, ils pourront ptr te repondre... https://www.developpez.com/
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)
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)