Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: yoelmend en 10 Julio 2017, 02:57 am



Título: capturar salida llamada al sistema
Publicado por: yoelmend en 10 Julio 2017, 02:57 am
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?


Título: Re: capturar salida llamada al sistema
Publicado por: engel lex en 10 Julio 2017, 03:15 am
en general value es un archivo, puedes hacer como si leyeras un archivo normal


Código
  1.  
  2. char buff;
  3. FILE *file;
  4. file = fopen("/sys/class/gpio/gpio1/value", "r");
  5. if (file) {
  6.    fread(valor, 1, 1, file);
  7.    fclose(file);
  8. }
  9. int valor = 0;
  10.  
  11. if(buff == '0') {
  12. valor = 0
  13. }else{
  14. valor = 1
  15. }
  16.  
  17.  



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



Título: Re: capturar salida llamada al sistema
Publicado por: yoelmend en 10 Julio 2017, 04:00 am
jajajajaj gracias amigo me ha iluminado la mente lo realize de esta forma.

Código
  1.     int valor;
  2.     FILE* fichero = fopen("/sys/class/gpio/gpio1/value","rt");
  3.     fscanf (fichero, "%d", &valor);
  4.     printf("valor: %i \n", valor);
................saludos!


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: capturar salida llamada al sistema
Publicado por: engel lex en 10 Julio 2017, 04:04 am
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)