Ordonnancement processus wait()

Ordonnancement processus wait() - C - Programmation

Marsh Posté le 10-03-2017 à 09:18:18    

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.     }

Reply

Marsh Posté le 10-03-2017 à 09:18:18   

Reply

Marsh Posté le 10-03-2017 à 11:38:43    

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.

Reply

Sujets relatifs:

Leave a Replay

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