capturar salida llamada al sistema

Iniciado por yoelmend, 10 Julio 2017, 02:57 AM

0 Miembros y 1 Visitante están viendo este tema.

yoelmend

Hola y disculpen mis preguntas de este dia es que este es el único foro c activo  ;-). Esta vez estoy intentando capturar una salida del sistema en un orangepi.

Cuando digito" cat /sys/class/gpio/gpio1/value" en la consola la misma me devuelve un 0 o un 1.

sprintf(path, "/sys/class/gpio/gpio1/value");  en lenguaje c una forma de enviar el comando seria esta, mi pregunta es como capturo ese 1 o 0 que devuelve el sistema?

engel lex

en general value es un archivo, puedes hacer como si leyeras un archivo normal




char buff;
FILE *file;
file = fopen("/sys/class/gpio/gpio1/value", "r");
if (file) {
    fread(valor, 1, 1, file);
    fclose(file);
}
int valor = 0;

if(buff == '0') {
valor = 0
}else{
valor = 1
}





hay librerías que simplifican esto como wiring pi , pero creo que es solo para raspberry

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

yoelmend

#2
jajajajaj gracias amigo me ha iluminado la mente lo realize de esta forma.

    int valor;
    FILE* fichero = fopen("/sys/class/gpio/gpio1/value","rt");
    fscanf (fichero, "%d", &valor);
    printf("valor: %i \n", valor);

................saludos!


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

engel lex

en el metodo fopen no conozco ese "rt" no se para que es la t... nunca lo he visto... y en general prefiero usar fread, porque es "mas seguro" (evita para aplicaciones, que hagan un buffer overflow o algo similar)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.