Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Risketo en 15 Octubre 2012, 23:31 pm



Título: Valor de system()
Publicado por: Risketo en 15 Octubre 2012, 23:31 pm
Hola que tal, estaba haciendo un programa que hace una llamada a al sistema operativo y me devuelve un valor, hasta ahí todo bien pero después no se como usar el valor que me devuelve.

El código es el siguiente:

Código
  1. int main(){
  2.  
  3. char core0[]="sensors | grep Core\\ 0 | cut -c 18-19";
  4. system(core0);
  5.  
  6. return 0;
  7. }

Y me devuelve la temperatura del procesador del pc.
Código:
52

La pregunta es: como pasar lo que me devuelve system() a int para poder operar con ese valor?
Lo he intentado haciendo:
Código
  1. int x;
  2. x=system(core0);
  3.  
  4. if ( x == 50 ) {printf ("cincuenta");}
  5. if ( x == 51 ) {printf ("cincuenta y uno");}

Pero nada...

Muchas gracias de antemano.


Título: Re: Valor de system()
Publicado por: The Swash en 16 Octubre 2012, 00:26 am
Hola,

Leyendo un poco creo que tu problema se resuelve utilizando:
popen:
http://linux.die.net/man/3/popen

y fscanf:
http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/

Fuente:
http://www.dreamincode.net/forums/topic/146172-c-system-return-values/

Saludos.


Título: Re: Valor de system()
Publicado por: Risketo en 16 Octubre 2012, 16:56 pm
Gracias the swash no conocía popen(), ahora el programa hace lo que yo quería que hiciese.

Código
  1. FILE  *fp;
  2. int x;
  3.  
  4. fp = popen("sensors | grep Core\\ 0 | cut -c 18-19","r");
  5. fscanf(fp,"%d", &x);
  6.  
  7. printf ("%d", x);
  8. if (x == 45){printf("  #45#  ");}
  9. if (x == 46){printf("  #46#  ");}
  10. if (x == 47){printf("  #47#  ");}
  11. if (x == 48){printf("  #48#  ");}
  12. if (x == 49){printf("  #49#  ");}
  13. if (x == 50){printf("  #50#  ");}
  14. if (x == 51){printf("  #51#  ");}
  15. if (x == 52){printf("  #52#  ");}
  16. if (x == 53){printf("  #53#  ");}
  17. if (x == 54){printf("  #54#  ");}
  18. if (x == 55){printf("  #55#  ");}
  19. if (x == 56){printf("  #56#  ");}
  20. if (x == 57){printf("  #57#  ");}
  21. if (x == 58){printf("  #58#  ");}
  22. if (x == 59){printf("  #59#  ");}
  23. if (x == 60){printf("  #60#  ");}
  24. if (x == 61){printf("  #61#  ");}
  25. if (x == 62){printf("  #62#  ");}
  26. if (x == 63){printf("  #63#  ");}
  27.  
  28. pclose(fp);


Lo único que no entiendo es que si al principio de todo hago una llamada al sistema para que haga un "sleep 1" no se ejecuta nada :S


Título: Re: Valor de system()
Publicado por: Puntoinfinito en 17 Octubre 2012, 00:22 am
Como que no se ejecuta sleep 1 al principio de programa?


Título: Re: Valor de system()
Publicado por: Foxy Rider en 17 Octubre 2012, 04:54 am
Totalmente innecesario hacerlo pidiendo los valores al comando sensors cuando tenés una misma librería que te dá esa función : http://www.lm-sensors.org/wiki/man/libsensors
libsensors es muy probable que esté, el comando sensors por otra parte ....

Es sentarse a leer la documentación de dicha librería.

Saludos.


Título: Re: Valor de system()
Publicado por: Risketo en 18 Octubre 2012, 17:11 pm
Muchas gracias, la libreria lm-sensors hace todo lo que yo queria  ;D