Advertisement
Jerkiller

esame SO

Jan 15th, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.05 KB | None | 0 0
  1. //termostato.c
  2.  
  3. int main(){
  4.   int rilevata,impostata,i;
  5.   int errore = 0;
  6.   char * temp = "";
  7.  
  8.   //fase iniziale in cui si setta la temperatura impostata
  9.  
  10.   while(!errore){
  11.     i=fork();
  12.     if(i<0){ error=1; perror("errore fork!"); exit(-1); }  
  13.     if(i==0){
  14.       execl("./temperatura","temperatura","",NULL);
  15.       error=1; perror("errore rilevamento!"); exit(-1);
  16.     }
  17.     while(i!=wait(&rilevata)){}
  18.     //attendi finche non termina "temperatura" e restituisce un valore
  19.     //salva tale valore in "rilevata"
  20.  
  21. //qui è sbagliato fare l'exec così direttamente, bisognerebbe forkare e poi far fare l'exec al figlio
  22.     if(rilevata < impostata){
  23.       sprintf(temp,"%d",(impostata-rilevata));
  24.       execl("./riscalda","riscalda",temp,NULL);
  25.       error=1; perror("errore riscaldamento!"); exit(-1);
  26.     }
  27.     else if(rilevata > impostata){
  28.       sprintf(temp,"%d",(rilevata-impostata));
  29.       execl("./raffredda","raffredda",temp,NULL);
  30.       error=1; perror("errore raffreddamento!"); exit(-1);
  31.     }
  32.  
  33.   }//end of while.
  34.  
  35. }//end of main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement