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)