[c] l'affichage de ces mini programmes

l'affichage de ces mini programmes [c] - C - Programmation

Marsh Posté le 06-06-2015 à 23:43:17    

salut , j'ais besoin que quelqu’un m'explique le travail de ces programmes svp , sachant qu'ils ont était exécuté via Unix
http://zupimages.net/up/15/23/e8nd.png
http://zupimages.net/up/15/23/vc87.png
http://zupimages.net/up/15/23/5kjh.png
http://zupimages.net/up/15/23/2xv8.png
http://zupimages.net/up/15/23/z5hy.png

Reply

Marsh Posté le 06-06-2015 à 23:43:17   

Reply

Marsh Posté le 06-06-2015 à 23:45:01    

Du code source sous forme d'images. On aura tout vu. :cry:  
 
(Autrement dit: Poste le code sous forme de texte avec les balises qui vont bien autour!)

Reply

Marsh Posté le 06-06-2015 à 23:51:40    

Code :
  1. #include<stdio.h>
  2. #include<sys/types.h>
  3. #include<errno.h>
  4. #include<unistd.h>
  5. #include<sys/wait.h>
  6. #include<stdlib.h>
  7. int i=2;
  8. int main()
  9. {
  10. int j=10;
  11. pid_t p;
  12. while ((i>=0) && (p=fork()))
  13. {i--;
  14. if(p<0)
  15. exit(1);}
  16. j+=2;
  17. if (p==0)
  18. {i*=3;
  19. j*=3;
  20. printf ("le flis i=%d , j=%d ",i,j);
  21. printf("\n" );
  22.  }
  23. else {
  24.  i*=2;
  25.  j*=2;
  26. printf ("le pere i=%d , j=%d ",i,j);
  27. printf("\n" );
  28.  }
  29. printf("\n" );
  30. return 0 ;
  31. }


Code :
  1. #include<stdio.h>
  2. #include<sys/types.h>
  3. #include<errno.h>
  4. #include<unistd.h>
  5. #include<sys/wait.h>
  6. #include<stdlib.h>
  7. int global;
  8. int main(){
  9.  pid_t child_pid;
  10.  int local=0;
  11.  child_pid=fork();
  12.  if (child_pid>=0){
  13.   if (child_pid==0){
  14.   printf("chield process:\n" );
  15.   local++;
  16.   global++;
  17.   printf("childpid :%d ,parent pid=%d\n",getpid              (),getppid());
  18.   printf("child local %d ,child global : %d\n" ,local , global);
  19.   system("who I am" );
  20.    }
  21.  else {
  22.   printf("parent process\n" );
  23.   printf(" parent pid ;%d , child pid : %d\n" , getpid(), child_pid);
  24.   wait(0) ;
  25.   printf(" end child" );
  26.   printf("parent's local:%d, parent's global : %d\n", local,global);
  27.   exit(0);
  28.   }
  29.  }
  30.  else
  31.  {perror("fork" ); exit(0);}
  32. return 0;


Code :
  1. #include <stdio.h>
  2. #include<unistd.h>
  3. int main(){
  4. pid_t pid;
  5. quisuisje="le pere";
  6. pid=fork();
  7. if(pid==0){
  8.  quisuisje="le fils";
  9.  printf("je suis le %s",quisuisje);
  10.  }
  11.  else{
  12.   printf("je suis %s",quisuisje);
  13.   wait(NULL);
  14.  }
  15. return 0;
  16. }


Code :
  1. #include<pthread.h>
  2. #include<unistd.h>
  3. #include<stdio.h>
  4. void *thread1(void *arg)
  5. {
  6. int i , j ;
  7. j=0 ;
  8. printf("thread1.1\n" );
  9. printf("thread1.2\n" );
  10. printf("thread1.3\n" );
  11. printf("thread1.4\n" );
  12. for(i=1;i<5;i++)
  13.  j=j+2;
  14. printf("fin thread1\n" );
  15. }
  16. void*thread2(void*arg)
  17. { int1,j;
  18. j=3;
  19. printf("thread2.1 %d " , getpid());
  20. printf("thread2.2\n" );
  21. printf("thread2.3\n" );
  22. printf("thread2.4\n" );
  23. for(i=1;j<5;i++)
  24.  j=j+2;
  25. printf("fin thread 2 \n" );
  26. }
  27. int main()
  28. {
  29. pthead_t p1,p2;
  30. printf(" je suis le pére mon if id" , getpid());
  31. pthread_create(&p1 , NULL , thread1 , NULL );
  32. pthread_create(&p2 , NULL , thread2 , NULL );
  33. if 1
  34. pthread_join (p1,NULL),
  35. pthread_join (p2,NULL),
  36. printf


Code :
  1. #include<stdio.h>
  2. #include<unistd.h>
  3. int main()
  4. {
  5. pid_t idfils;
  6. int i;
  7. for(i=0;i<3;i++){
  8. idfils=fork();
  9. if(idfils==0){
  10. printf("je suis le fils mon ID: %d et le ID de mon pere est: %d \n",getpid(),getppid());
  11. _exit(0);
  12. }
  13. else {
  14. printf("je suis le pere mon ID est: %d \n",getpid());
  15. }
  16. }
  17. return 0;
  18. }


voila

Reply

Marsh Posté le 07-06-2015 à 20:17:26    

Tous ces programmes utilisent la fonction fork().
 
C'est probablement elle que vous ne comprenez pas.
En résumé, elle permet d'avoir plusieurs programmes qui tournent (quasiment) en même temps.
Par exemple, un programme sur un serveur est sollicité quand un programme sur un poste client demande une connexion.
A ce moment, le programme sur le serveur va appeler la fonction fork(), pour que la gestion de la conversation avec le client se fasse en parallèle, de manière à ce que le programme principal soit tout de suite prêt à accepter une autre connexion, sans avoir à attendre la fin de la conversation qui vient de commencer.
Il y aura donc un programme global d'attente des demandes de connexion, et de zéro à plusieurs programmes de gestion des conversations qui tourneront en parallèle.
Le problème est qu'il existe des tas de subtilités concernant le parallélisme. Cela ne se fait pas obligatoirement avec fork(). C'est un vaste sujet.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed