Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1540 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Ordonnancement processus wait()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ordonnancement processus wait()

n°2297521
raghebgmir​a
Posté le 10-03-2017 à 09:18:18  profilanswer
 

Bonjour,
 
Je ne comprend pas la déférence entre l'utilisation de wait() dans ces deux codes :
Je sait que wait() dois être exécuter par le père pour attendre son fils.
Pourquoi dans le 1er code il y'a un IF qui teste s'il est dans le fils ou non alors dans le 2éme il n'ya pas ce test.
Merci pour votre aide.
 
code 1 :

Code :
  1. int main(){
  2.     int result1,result2,result3;
  3.     result1 = fork();
  4.     if(result1 == 0){
  5.     result2 = fork();
  6.     if(result2 == 0){
  7.     result3 = fork();
  8.     if(result3 >0)
  9.     wait(NULL);
  10.     }
  11.     else
  12.     wait(NULL);
  13.     }
  14.     else
  15.     wait(NULL);
  16.     }


 
Code 2 :
 

Code :
  1. int main() {
  2.     int result1, result2, result3;
  3.     result1 = fork();
  4.     result2 = fork();
  5.     result3 = fork();
  6.     if (result3) wait(NULL);
  7.     if (result2) wait(NULL);
  8.     if (result1) wait(NULL);
  9.     }

mood
Publicité
Posté le 10-03-2017 à 09:18:18  profilanswer
 

n°2297524
Anonymouse
Posté le 10-03-2017 à 11:38:43  profilanswer
 

raghebgmira a écrit :

Bonjour,
 
Je ne comprend pas la déférence entre l'utilisation de wait() dans ces deux codes :
Je sait que wait() dois être exécuter par le père pour attendre son fils.
Pourquoi dans le 1er code il y'a un IF qui teste s'il est dans le fils ou non alors dans le 2éme il n'ya pas ce test.
Merci pour votre aide.
 
code 1 :

Code :
  1. int main(){
  2.     int result1,result2,result3;
  3.     result1 = fork();
  4.     if(result1 == 0){
  5.     result2 = fork();
  6.     if(result2 == 0){
  7.     result3 = fork();
  8.     if(result3 >0)
  9.     wait(NULL);
  10.     }
  11.     else
  12.     wait(NULL);
  13.     }
  14.     else
  15.     wait(NULL);
  16.     }


 
Code 2 :
 

Code :
  1. int main() {
  2.     int result1, result2, result3;
  3.     result1 = fork();
  4.     result2 = fork();
  5.     result3 = fork();
  6.     if (result3) wait(NULL);
  7.     if (result2) wait(NULL);
  8.     if (result1) wait(NULL);
  9.     }



 
Le code "if (result3)" est équivalent à "if (result3 != 0)".  
 
Il y'a donc des tests sur la présence ou l'absence de fils.
 
PS tu devrais indenter ton code. C'est illisible tel quel.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Ordonnancement processus wait()

 

Sujets relatifs
wait()avoir 2 processus java distincts pour 2 programmes ?
Cacher un processuskill un processus
Processus de "Timeout"script batch kill processus + copie de fichiers
[VB] Comment kill processus dans un endroit précis.processus / minishell
attendre fin d'un processus[Résolu] [Oracle] Conflit de processus d'ecoute
Plus de sujets relatifs à : Ordonnancement processus wait()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR