elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  warnings en compilacion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: warnings en compilacion  (Leído 3,013 veces)
ccsponcer3

Desconectado Desconectado

Mensajes: 11


Ver Perfil
warnings en compilacion
« en: 30 Mayo 2016, 04:37 am »

Hola gente, tengo lo siguiente, esto lo que hace es basicamente crear un archivo "vacio" en base a un archivo de configuracion del cual obtiene la data respectiva. La cuestion es que me tira unos warnings en la funcion fgets y en las funciones fscanf que dicen lo siguiente:

ignoring return value of ‘fgets’, declared with attribute warn_unused_result [-Wunused-result]

ignoring return value of ‘fscanf’, declared with attribute warn_unused_result [-Wunused-result]

y esto para la funcion exec, que directamente no la reconoce:
implicit declaration of function ‘exec’ [-Wimplicit-function-declaration]




FILE *conf = NULL;
      char *config_file = "swap.cfg";
      char *nombre_swap = calloc(50,1);
      char *dd = calloc(1000,1);
      int count_page = 0;
      int size_page = 0;
      conf = fopen(config_file,"r");
      if(conf){
         fgets(dd,1000,conf); //Saltamos la primer linea
         fscanf(conf,"NOMBRE_SWAP=%s\n\r",nombre_swap);
         fscanf(conf,"CANTIDAD_PAGINAS=%d\n\r",&count_page);
         fscanf(conf,"TAMANIO_PAGINA=%d\n\r",&size_page);
         memset(dd,0,1000);
         snprintf(dd,1000,"dd if=/dev/zero of=%s bs=%i count=%i",nombre_swap,count_page,size_page);
         printf("dd command: %s\n",dd);
         exec(dd); //ejecutar linea de comando
      }
      else   {
         printf("no se puede abrir el archivo de configuracion\n");
      }


Lo que no tengo idea mucho es como proceder y especificamente que me esta diciendo. Gracias!


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: warnings en compilacion
« Respuesta #1 en: 30 Mayo 2016, 04:55 am »

 :silbar: :silbar: Reconozco ese codigo   ;-) ;-)

Sobre el exec necesitas:

Código
  1. #include <unistd.h>

Y mas info al respecto de esas funciones en: http://linux.die.net/man/3/exec


Lo que no tengo idea mucho es como proceder y especificamente que me esta diciendo. Gracias!

Citar
ignoring return value of ‘fgets’, declared with attribute warn_unused_result [-Wunused-result]

Te esta diciendo que se esta ignorando el resultado que devuelven esas funciones cada una devuelve algun valor con el cual puedes validar que la funciones tuvo exito o no..

Sobre el warning de fscanf  y fgets son omitibles solo si realmente quieres validar si hay o no error por ejemplo fgets devuelve:


Citar
gets() and fgets() return s on success, and NULL on error or when end of file occurs while no characters have been read.

Mas info en http://linux.die.net/man/3/fgets

Lo que quiere decir es que realmente tendrias que agregar esto:

Código
  1. dd = fgets(dd,1000,conf);
  2. if(dd == NULL){
  3.  printf("Error\n");
  4.  exit(0);
  5. }

Eso fue para el fgets y para el fscanf tenemos

http://linux.die.net/man/3/fscanf

Citar
These functions return the number of input items successfully matched and assigned, which can be fewer than provided for, or even zero in the event of an early matching failure.

Dice que tienes que tener:

Código
  1. int err;
  2. err =  fscanf(conf,"NOMBRE_SWAP=%s\n\r",nombre_swap);
  3. if(err == 0){
  4.  printf("Error\n");
  5.  exit(0);
  6. }
  7. //Asi con todos y cada uno de los fscanf
  8.  


Pero repito realemente es omitible el warning

Saludos!


« Última modificación: 30 Mayo 2016, 04:57 am por AlbertoBSD » En línea

ccsponcer3

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: warnings en compilacion
« Respuesta #2 en: 30 Mayo 2016, 05:57 am »

Hola, gracias por la respuesta en cuanto a la libreria unistd.h la misma esta incluida, sera por los parametros de la misma? gracias
En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: warnings en compilacion
« Respuesta #3 en: 5 Junio 2016, 18:03 pm »

Prueba de este modo....

Código:
if( fgets (dd,1000,conf)!=NULL ){
     // ..
}

etc

El compilador te esta diciendo que debes chequear lo que devuelve fgets() aunque claro que podriasa usar la opcion que te da: -Wunused-result (con eso suprimes el error)
 
« Última modificación: 5 Junio 2016, 20:28 pm por HardForo » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Fase test: Mi intranet :: Matriculas - notas - pagos - etc :: Comentar Warnings
Desarrollo Web
Hadess_inf 5 3,260 Último mensaje 4 Julio 2010, 10:35 am
por Joker
Warnings en tratamiento de ficheros con C++ Builder XE
Programación C/C++
mario_tko 1 3,168 Último mensaje 15 Noviembre 2011, 16:01 pm
por do-while
Warnings en gcc -Wall
Programación C/C++
soyloqbuskas 3 3,926 Último mensaje 4 Abril 2012, 03:51 am
por Beakman
warnings « 1 2 »
Programación C/C++
m@o_614 13 6,980 Último mensaje 31 Diciembre 2012, 01:23 am
por m@o_614
Implementar warnings en compilador
Programación General
Adri124 0 1,761 Último mensaje 28 Junio 2016, 21:16 pm
por Adri124
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines