Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda con una funcion para una minishell en C

Estas en el tema de Ayuda con una funcion para una minishell en C en el foro de C/C++ en Foros del Web. Hola buenos días a todos, me he inscrito debido a que tengo un problema a la hora de acabar una practica a entregar dentro de ...
  #1 (permalink)  
Antiguo 24/08/2009, 05:52
 
Fecha de Ingreso: agosto-2009
Mensajes: 8
Antigüedad: 14 años, 8 meses
Puntos: 0
Ayuda con una funcion para una minishell en C

Hola buenos días a todos, me he inscrito debido a que tengo un problema a la hora de acabar una practica a entregar dentro de pocos días, mi problema es una vez completada la práctica (creo que bien hecha salvo el error que me sale).
Tengo un par de problemas que me dan en la última linea de la práctica (en el "}" de la última función pero que deben de ser en el main donde este el error).

main.c: In function 'main':
main.c:449: error: expected declaration or statement at end of input
main.c:449: warning: control reaches end of non-void function

¿Alguien podría guiarme un poco de porque son estos errores?

Mil gracias
  #2 (permalink)  
Antiguo 24/08/2009, 05:59
 
Fecha de Ingreso: agosto-2009
Mensajes: 8
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Ayuda con una funcion para una minishell en C

Perdonar ese error me daba en el main, por poner un "}" menos, pero me han salido unos errores todos debido a lo mismo:

en una de las funciones de la clase he creado un atributo tipo para referirme a las redirecciones (la función se encagar de hacer las redirecciones) entonces en caso que sea redireccion de entrada entonces tipo vale 1, si es una redireccion de salida tipo vale 2 y si es una redireccion de error entonces vale 3.

El problema viene que lo que hago para hallar que tipo de redireccion ejecuto la funcion y luego creo un if que diga que si tipo == 1 entonces haga tal (reconociendo como que es una redireccion de salida).

¿ Como podría hacer para que ese atributo dentro de una función se pueda usar dentro de otra función?

Un saludo
  #3 (permalink)  
Antiguo 24/08/2009, 11:00
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años
Puntos: 5
Respuesta: Ayuda con una funcion para una minishell en C

primero la funcion donde determenias que tipo es te debe devolver un tipo entero

despues para poder utilizarlo en otra funcion nada mas lo tienes que mandar como un parametro y listo.

por cierto te recomiendo utlizar switch en lugar de if o else if

saludos
__________________
Bienvenidos los karmas.
Quejas, sugerencias o dudas, se awantan......
  #4 (permalink)  
Antiguo 25/08/2009, 02:40
 
Fecha de Ingreso: agosto-2009
Mensajes: 8
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Ayuda con una funcion para una minishell en C

Buenos dias, en primer lugar muchisimas gracias por responder tan rapido, el problema estaría en que ya devuelve "1" en caso que haya redirección (es la condifición que meto primero en un if en la función donde ejecuto el metodo de la redirección). Te dejo aqui como tengo esa parte obviando detalles anteriores que no influyen aunque estén dentro de la función:

MandatoSimple(char ***argvv, char *filev[3], int bg){
.
.
.
if (hayRedireccion(filev) == 1){
____switch (tipo){
______ // miramos si hay que hacer una redirección de la entrada (<)
______ case 1:
________if ((fd_in = open(filev[0], O_RDONLY)) == -1){
__________ perror(" ERROR al tratar de abrir la redirección de entrada para ejecutar un mandato simple");
__________ exit(1);
________}
.
.
.
____}
.
.
.

Nota: los "_" los he utilizado a modo de espacio a la izquierda del inicio del código para que se viera mejor la estructura.
Entonces si te entendi bien lo que me comentabas era de añadir el tipo a la cabecera de la función hayRedireccion(), pero el problema sería que la utilidad de ello es unicamente para hallar si hay algún tipo de redirección no decirle una redirección
Sobre los switch te doy toda la razón así será bastante mejor, ya lo he cambiado.

Muchas gracias de nuevo por tu rápida respuesta
  #5 (permalink)  
Antiguo 25/08/2009, 09:14
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años
Puntos: 5
Respuesta: Ayuda con una funcion para una minishell en C

hola rayher1987

podrias poner el codigo completo para tener una idea un poco mas clara de lo que pides...

saludos
__________________
Bienvenidos los karmas.
Quejas, sugerencias o dudas, se awantan......
  #6 (permalink)  
Antiguo 25/08/2009, 13:49
 
Fecha de Ingreso: agosto-2009
Mensajes: 8
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Ayuda con una funcion para una minishell en C

muchas gracias por tu ayuda compañero, ya localice el error, era bastante tonto, en vez de crear el atributo en el main tenia que declararlo fuera de el como una variable global
  #7 (permalink)  
Antiguo 26/08/2009, 03:09
Avatar de define  
Fecha de Ingreso: enero-2008
Mensajes: 100
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Ayuda con una funcion para una minishell en C

una variable global como atributo? siento decirte que esa practica esta mal echa en programacion, seria mejor que lo declarases como un puntero en el main, y que trabajases sobre el (al ser un puntero, se trabajara obviamente por referencia).

Las variables globales no tienden a ayudar a una manutencion comoda del codigo (experiencia propia), con lo cual, si yo fuera tu, lo haria mediante punteros cmo te he dicho
  #8 (permalink)  
Antiguo 26/08/2009, 09:24
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años
Puntos: 5
Respuesta: Ayuda con una funcion para una minishell en C

efectivamente coincido con define, las variables globales no son las mejores opciones, por lo que tambien te recomiendo que utilices punteros...

saludos
__________________
Bienvenidos los karmas.
Quejas, sugerencias o dudas, se awantan......
  #9 (permalink)  
Antiguo 05/09/2009, 05:00
 
Fecha de Ingreso: agosto-2009
Mensajes: 8
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Ayuda con una funcion para una minishell en C

muchas gracias por la idea, la verdad es que estos días no pude leerlo, pero es bueno saberlo para tenerlo en cuenta, no sabía que no fueran buenas opciones, muchas gracias a los tres por ayudarme
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:33.