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:
int main(){
char core0[]="sensors | grep Core\\ 0 | cut -c 18-19";
system(core0);
return 0;
}
Y me devuelve la temperatura del procesador del pc.
52
La pregunta es: como pasar lo que me devuelve system() a int para poder operar con ese valor?
Lo he intentado haciendo:
int x;
x=system(core0);
if ( x == 50 ) {printf ("cincuenta");}
if ( x == 51 ) {printf ("cincuenta y uno");}
Pero nada...
Muchas gracias de antemano.
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.
Gracias the swash no conocía popen(), ahora el programa hace lo que yo quería que hiciese.
FILE *fp;
int x;
fp = popen("sensors | grep Core\\ 0 | cut -c 18-19","r");
fscanf(fp,"%d", &x);
printf ("%d", x);
if (x == 45){printf(" #45# ");}
if (x == 46){printf(" #46# ");}
if (x == 47){printf(" #47# ");}
if (x == 48){printf(" #48# ");}
if (x == 49){printf(" #49# ");}
if (x == 50){printf(" #50# ");}
if (x == 51){printf(" #51# ");}
if (x == 52){printf(" #52# ");}
if (x == 53){printf(" #53# ");}
if (x == 54){printf(" #54# ");}
if (x == 55){printf(" #55# ");}
if (x == 56){printf(" #56# ");}
if (x == 57){printf(" #57# ");}
if (x == 58){printf(" #58# ");}
if (x == 59){printf(" #59# ");}
if (x == 60){printf(" #60# ");}
if (x == 61){printf(" #61# ");}
if (x == 62){printf(" #62# ");}
if (x == 63){printf(" #63# ");}
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
Como que no se ejecuta sleep 1 al principio de programa?
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.
Muchas gracias, la libreria lm-sensors hace todo lo que yo queria ;D