add maths optimisation tp

master
Antoine PEREDERII 1 year ago
parent f272f48ca7
commit 600a25b5bf

Binary file not shown.

@ -5,6 +5,7 @@ int main(int argc, char* argv[])
{ {
for(int i = 0; i < argc; ++i) for(int i = 0; i < argc; ++i)
printf("argument %d : %s \n", i, argv[i]); printf("argument %d : %s \n", i, argv[i]);
puts("\n----------------\n"); //mieux qu'un printf car moins gourmand pour char() puts("\n----------------\n"); //mieux qu'un printf car moins gourmand pour char()
printf("PATH => %s\n", getenv("PATH")); printf("PATH => %s\n", getenv("PATH"));

@ -13,13 +13,12 @@ int main(int argc, char **argv) {
struct timespec t; struct timespec t;
switch(pid=fork()) { switch(pid=fork()) {
case -1 : /* Oups !!! fork n'a pas marché !*/
case -1 : /* Oups !!! fork n'a pas marché !*/ perror("fork"); exit(errno);
perror("fork"); exit(errno);
case 0 : /* Code du fils */ case 0 : /* Code du fils */
printf("[fils]: je suis le fils de pid %d\n", getpid()); printf("[fils]: je suis le fils de pid %d\n", getpid());
for (i=0; i<10 ; i++) { for (i=0; i<10 ; i++) {
printf("[fils]: %d\n",i); printf("[fils]: %d\n",i);
t.tv_sec=0; t.tv_sec=0;
t.tv_nsec=500000000; t.tv_nsec=500000000;
@ -27,19 +26,18 @@ int main(int argc, char **argv) {
} }
system("ps -f"); system("ps -f");
exit(2); exit(2);
break; break;
default : /* Code du père*/ default : /* Code du père*/
if ((pid=wait(&etat))==-1) { if ((pid=wait(&etat))==-1) {
perror("pb avec le wait"); perror("pb avec le wait");
exit(errno); exit(errno);
} }
if (WIFEXITED(etat)) if (WIFEXITED(etat))
printf("[pere]: mon fils %d a retourne le code %d\n", pid, WEXITSTATUS(etat)); printf("[pere]: mon fils %d a retourne le code %d\n", pid, WEXITSTATUS(etat));
else else
printf("[pere]: mon fils %d s est mal termine\n",pid); printf("[pere]: mon fils %d s est mal termine\n",pid);
printf("[pere]: Fin du processus pere de pid %d.\n", getpid());
printf("[pere]: Fin du processus pere de pid %d.\n", getpid());
} }

@ -9,54 +9,54 @@
/* Correction TP1 exo4 by O Guinaldo */ /* Correction TP1 exo4 by O Guinaldo */
void codeDuFils(int n) { void codeDuFils(int n) {
int i; int i;
struct timespec t; struct timespec t;
for (i=0 ; i<10 ; i++) { for (i=0 ; i<10 ; i++) {
printf("(numero %d dit :) %d\n", n, i); printf("(numero %d dit :) %d\n", n, i);
t.tv_sec=0; t.tv_sec=0;
t.tv_nsec=300000000+n*100000000; t.tv_nsec=300000000+n*100000000;
/* il n'affiche pas au meme rythme */ /* il n'affiche pas au meme rythme */
nanosleep(&t, NULL); nanosleep(&t, NULL);
} }
exit(n); /*le fils retourne son numero comme code de retour */ exit(n); /*le fils retourne son numero comme code de retour */
} }
int main (int argc, char* argv[]){ int main (int argc, char* argv[]){
int i, etat, N; int i, etat, N;
pid_t pid; pid_t pid;
if (argc!=2) { if (argc!=2) {
fputs("Donner un arg entier\n", stderr); fputs("Donner un arg entier\n", stderr);
exit(1); exit(1);
} }
/* le atoi ne gère pas les erreurs /* le atoi ne g<>re pas les erreurs
preferer le sscanf (un scanf dans une chaine) */ preferer le sscanf (un scanf dans une chaine) */
N=atoi(argv[1]); N=atoi(argv[1]);
/* le pere va creer N fils */ /* le pere va creer N fils */
for (i=0 ; i<N ; i++) { for (i=0 ; i<N ; i++) {
if((pid=fork())==-1) { if((pid=fork())==-1) {
perror("pb fork"); perror("pb fork");
exit(errno); exit(errno);
} }
else if (pid==0) { else if (pid==0) {
codeDuFils(i); codeDuFils(i);
exit(0); exit(0);
/* le ieme fils ne doit pas retourner dans la boucle */ /* le ieme fils ne doit pas retourner dans la boucle */
} }
} }
/* la suite n'est faite que par le père */ /* la suite n'est faite que par le p<>re */
for (i=0 ; i<N ; i++) { for (i=0 ; i<N ; i++) {
if ((pid=wait(&etat))==-1) {perror("pb wait"); exit(errno);} if ((pid=wait(&etat))==-1) {perror("pb wait"); exit(errno);}
if (WIFEXITED(etat)) if (WIFEXITED(etat))
printf("(pere:) fils %d a retourne le code %d\n", pid, WEXITSTATUS(etat)); printf("(pere:) fils %d a retourne le code %d\n", pid, WEXITSTATUS(etat));
else else
printf("(pere:) fils %d s'est mal termine\n", pid); printf("(pere:) fils %d s'est mal termine\n", pid);
} }
puts("(pere:) appli terminee"); puts("(pere:) appli terminee");
exit(0); exit(0);
} }

Loading…
Cancel
Save