add maths optimisation tp

master
Antoine PEREDERII 1 year ago
parent f272f48ca7
commit 600a25b5bf

Binary file not shown.

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

@ -13,13 +13,12 @@ int main(int argc, char **argv) {
struct timespec t;
switch(pid=fork()) {
case -1 : /* Oups !!! fork n'a pas marché !*/
perror("fork"); exit(errno);
case -1 : /* Oups !!! fork n'a pas marché !*/
perror("fork"); exit(errno);
case 0 : /* Code du fils */
printf("[fils]: je suis le fils de pid %d\n", getpid());
for (i=0; i<10 ; i++) {
printf("[fils]: je suis le fils de pid %d\n", getpid());
for (i=0; i<10 ; i++) {
printf("[fils]: %d\n",i);
t.tv_sec=0;
t.tv_nsec=500000000;
@ -27,19 +26,18 @@ int main(int argc, char **argv) {
}
system("ps -f");
exit(2);
break;
break;
default : /* Code du père*/
default : /* Code du père*/
if ((pid=wait(&etat))==-1) {
perror("pb avec le wait");
exit(errno);
}
}
if (WIFEXITED(etat))
printf("[pere]: mon fils %d a retourne le code %d\n", pid, WEXITSTATUS(etat));
else
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 */
void codeDuFils(int n) {
int i;
struct timespec t;
for (i=0 ; i<10 ; i++) {
printf("(numero %d dit :) %d\n", n, i);
t.tv_sec=0;
t.tv_nsec=300000000+n*100000000;
/* il n'affiche pas au meme rythme */
nanosleep(&t, NULL);
int i;
struct timespec t;
for (i=0 ; i<10 ; i++) {
printf("(numero %d dit :) %d\n", n, i);
t.tv_sec=0;
t.tv_nsec=300000000+n*100000000;
/* il n'affiche pas au meme rythme */
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 i, etat, N;
pid_t pid;
int i, etat, N;
pid_t pid;
if (argc!=2) {
fputs("Donner un arg entier\n", stderr);
exit(1);
if (argc!=2) {
fputs("Donner un arg entier\n", stderr);
exit(1);
}
/* le atoi ne gère pas les erreurs
preferer le sscanf (un scanf dans une chaine) */
N=atoi(argv[1]);
/* le pere va creer N fils */
for (i=0 ; i<N ; i++) {
if((pid=fork())==-1) {
perror("pb fork");
exit(errno);
/* le atoi ne g<>re pas les erreurs
preferer le sscanf (un scanf dans une chaine) */
N=atoi(argv[1]);
/* le pere va creer N fils */
for (i=0 ; i<N ; i++) {
if((pid=fork())==-1) {
perror("pb fork");
exit(errno);
}
else if (pid==0) {
codeDuFils(i);
exit(0);
/* le ieme fils ne doit pas retourner dans la boucle */
else if (pid==0) {
codeDuFils(i);
exit(0);
/* le ieme fils ne doit pas retourner dans la boucle */
}
}
/* la suite n'est faite que par le père */
for (i=0 ; i<N ; i++) {
if ((pid=wait(&etat))==-1) {perror("pb wait"); exit(errno);}
if (WIFEXITED(etat))
printf("(pere:) fils %d a retourne le code %d\n", pid, WEXITSTATUS(etat));
else
printf("(pere:) fils %d s'est mal termine\n", pid);
}
puts("(pere:) appli terminee");
exit(0);
/* la suite n'est faite que par le p<>re */
for (i=0 ; i<N ; i++) {
if ((pid=wait(&etat))==-1) {perror("pb wait"); exit(errno);}
if (WIFEXITED(etat))
printf("(pere:) fils %d a retourne le code %d\n", pid, WEXITSTATUS(etat));
else
printf("(pere:) fils %d s'est mal termine\n", pid);
}
puts("(pere:) appli terminee");
exit(0);
}

Loading…
Cancel
Save