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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  [C++]Acceder a otros directorios durante la ejecución
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C++]Acceder a otros directorios durante la ejecución  (Leído 2,604 veces)
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
[C++]Acceder a otros directorios durante la ejecución
« en: 8 Febrero 2013, 17:46 pm »

Hola!

Estoy creando un proyecto en C++ bastante importante y la verdad que tengo un problema... Antes de todo aclarar que está siendo estrictamente desarrollado para solo sistemas Linux.

Lo que necesito es que creé un fichero .conf que la aplicación lo lea y pueda atribuir la configuración del fichero. El .conf se encuentra en /etc/ mientras que la aplicación en si se encuentra en /usr/bin. La lectura y escritura del fichero se realiza a través de ifstream y ofstream lo que produce que tenga que poner en el código ../../ para desplazarme carpetas atrás.

Pero claro, el problema está que esto se hace a través del directorio donde se encuentra el usuario en la consola es decir en su /home/user, pero no siempre es así, siempre que cambie de directorio el programa no va a poder leer el fichero .conf ya que no se encontrará a la ruta donde el objeto de ifstream fue declarado; ifstream fich("../../etc/fich.conf").

No sé si se entiende, pero les pondré un ejemplo;

Estoy en mi consola desde [~ usuario] es decir (/home/usuario). Yo ejecuto nombredelprograma en la consola y este lee /usr/bin y detecta que existe. El programa comienza a ejecutarse. Primero mira si ../../etc/fich.conf existe, en este caso sí, ya que estamos posicionados en la ruta perfecta.

Pero bien, ahora imaginemos que estamos en consola desde /home/usuario/Desktop, ahora al que el programa revise ../../etc/fich.conf verá que no existe y entonces producirá un error, ya que es como si estuviese mirando si existe en /home/etc/fich.conf y esto no existe en linux...

La verdad que estaría bien que el programa solo comenzar se situara por defecto en alguna ruta donde se fije así el programa lea perfectamente. He intentado de hacerlo con system("cd /home/usuario") al principio de la ejecución de código, debido a que solo será para sistemas Linux, pero nada, no va...

Sé que no se entiende muy bien, pero he intentado explicar-lo lo mejor posible, si hay dudas no duden en comentar y intentaré responder para aclarar mejor....  :D

Saludos


En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [C++]Acceder a otros directorios durante la ejecución
« Respuesta #1 en: 8 Febrero 2013, 19:17 pm »

A ver, quiza te interese getcwd() y chdir()

No se si he entendido muy bien lo que querias, pero creo que con eso no te sera dificil conseguirlo, de todas formas cualquier duda con las funciones o lo que sea postea.

Aunque lo que no se es porque haces esto:

Código
  1. ifstream fich("../../etc/fich.conf")

Normalmente si la ruta empieza por un slash ('/'), esta se interpreta como una ruta absoluta, asi que con hacer:

Código
  1. ifstream fich("/etc/fich.conf")

Deberia funcionar.

Saludos.


En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: [C++]Acceder a otros directorios durante la ejecución
« Respuesta #2 en: 8 Febrero 2013, 21:45 pm »

A ver, quiza te interese getcwd() y chdir()

No se si he entendido muy bien lo que querias, pero creo que con eso no te sera dificil conseguirlo, de todas formas cualquier duda con las funciones o lo que sea postea.

Aunque lo que no se es porque haces esto:

Código
  1. ifstream fich("../../etc/fich.conf")

Normalmente si la ruta empieza por un slash ('/'), esta se interpreta como una ruta absoluta, asi que con hacer:

Código
  1. ifstream fich("/etc/fich.conf")

Deberia funcionar.

Saludos.

Gracias!! Ahora me lo miro con calma, pero ya te digo; los dos puntos los pongo para indicar de que se trata de una carpeta anterior. No sé, esto lo he "pillado" de PHP, tal vez en C++ no es así y no lo se... Entonces si pongo /ruta/ ya lo toma como ruta absoluta y se va a ella sin tener que indicar la posición (sin los dos puntos vamos)?
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: [C++]Acceder a otros directorios durante la ejecución
« Respuesta #3 en: 8 Febrero 2013, 23:44 pm »

Perfecto, solución encontrada  ;-)

Gracias por tu ayuda!
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [C++]Acceder a otros directorios durante la ejecución
« Respuesta #4 en: 9 Febrero 2013, 14:35 pm »

Lo de los dos puntos no es propio del lenguaje, sino del SO. En Unix/Linux, un punto es el directorio actual y dos puntos el anterior.

Por cierto, se puede preguntar que estas programando? Porque en programacion especifica para Linux si te hace falta en cosas puntuales te puedo echar una mano o dar sugerencias  ;)
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Puntoinfinito


Desconectado Desconectado

Mensajes: 919


#! /win/archlinux


Ver Perfil WWW
Re: [C++]Acceder a otros directorios durante la ejecución
« Respuesta #5 en: 9 Febrero 2013, 20:23 pm »

Lo de los dos puntos no es propio del lenguaje, sino del SO. En Unix/Linux, un punto es el directorio actual y dos puntos el anterior.

Por cierto, se puede preguntar que estas programando? Porque en programacion especifica para Linux si te hace falta en cosas puntuales te puedo echar una mano o dar sugerencias  ;)

Por supuesto, estoy programando una aplicación de consola que se utiliza a través de comandos con la que puedes generar accesos directos (los unicos Desktop Entry de Linux) si puede ser con algúnos plugins :)

Si quieres participar o ayudar un poco no dudes en decírmelo!
En línea

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [C++]Acceder a otros directorios durante la ejecución
« Respuesta #6 en: 9 Febrero 2013, 20:27 pm »

Claro, por mi encantado, es una buena idea  ;)
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cambiar el nombre del programa durante su ejecucion « 1 2 »
Programación Visual Basic
Krnl64 10 7,250 Último mensaje 23 Abril 2006, 21:06 pm
por Eternal Idol
Acceder a directorios
Programación Visual Basic
esamper 2 1,169 Último mensaje 29 Diciembre 2006, 18:22 pm
por esamper
Crear Variables durante el tiempo de ejecución.
Programación C/C++
prometheus48 2 5,210 Último mensaje 18 Mayo 2012, 19:26 pm
por BlackZeroX
Forma en que se muestran cambios durante la ejecución
Java
omaaraguirre 2 3,011 Último mensaje 30 Julio 2017, 05:00 am
por omaaraguirre
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines