Cómo obtener la ruta absoluta para una ruta relativa determinada mediante programación en Linux?
-
22-09-2019 - |
Pregunta
Como llegar a la ruta absoluta para una ruta relativa determinada mediante programación en Linux?
Encasode de Windows que tiene la API _fullpath()
. En otras palabras, me refiero a lo que es análoga a la API _fullpath
de Windows en Linux?
Solución
Como Pablo mencionó, el uso realpath()
. Tenga en cuenta sin embargo, que desde hace muchos sistemas de archivos en el soporte de Linux enlaces duros , cualquier directorio dado puede tener una número de diferentes rutas absolutas.
Otros consejos
Salida del href="http://www.opengroup.org/onlinepubs/000095399/functions/realpath.html" rel="nofollow noreferrer"> función .
#include <stdlib.h>
#include <stdio.h>
#include <linux/limits.h>
int main()
{
char resolved_path[PATH_MAX];
realpath("../../", resolved_path);
printf("\n%s\n",resolved_path);
return 0;
}
No es la realpath
de stdlib.h
Correr en RedHat 5.3, la ruta real no existe, pero se instala readlink. Se puede utilizar en rutas relativas y enlaces simbólicos, además de que resolverá los enlaces simbólicos de forma recursiva para usted. Es por lo tanto una mejor opción que la ruta real en mi opinión
readlink -f .
El también es otra forma útil, como "readlink -m $ archivo"
En primer lugar, funciona sin necesidad de archivo de destino de existir. En segundo lugar, que se encargará de enlaces simbólicos y obtener la ruta realmente real.
// For C++ with Gnome Gtkmm3 libraries
#include <glibmm.h>
#include <giomm.h>
string PathRel2Abs(string relpath) {
Glib::RefPtr<Gio::File> file = Gio::File::create_for_path(relpath);
return file->get_path();
}