ver una rutas ruta relativas relativa obtener nombre net fileupload cómo copiar completa carpeta asp archivo acceso absolutas c unix path filesystems absolute

c - una - ruta relativa



Obtener la ruta absoluta de un archivo (2)

Pruebe también con "getcwd"

#include <unistd.h> char cwd[100000]; getcwd(cwd, sizeof(cwd)); std::cout << "Absolute path: "<< cwd << "/" << __FILE__ << std::endl;

Resultado:

Absolute path: /media/setivolkylany/WorkDisk/Programming/Sources/MichailFlenov/main.cpp

Entorno de prueba:

setivolkylany@localhost$/ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 8.6 (jessie) Release: 8.6 Codename: jessie setivolkylany@localhost$/ uname -a Linux localhost 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux setivolkylany@localhost$/ g++ --version g++ (Debian 4.9.2-10) 4.9.2 Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

¿Cómo puedo convertir una ruta relativa a una ruta absoluta en C en Unix? ¿Hay una función del sistema conveniente para esto?

En Windows hay una función GetFullPathName que hace el trabajo, pero no encontré algo similar en Unix ...


Use realpath() .

La realpath() derivará, de la ruta de acceso apuntada por file_name , una ruta de acceso absoluta que nombra el mismo archivo, cuya resolución no implica '' . '','' .. '', o enlaces simbólicos. El nombre de ruta generado se almacenará como una cadena terminada en nulo, hasta un máximo de {PATH_MAX} bytes, en el buffer apuntado por resolved_name .

Si resolved_name es un puntero nulo, el comportamiento de realpath() está definido por la implementación.

El siguiente ejemplo genera una ruta de acceso absoluta para el archivo identificado por el argumento de enlace simbólico. El nombre de ruta generado se almacena en la matriz de ruta real.

#include <stdlib.h> ... char *symlinkpath = "/tmp/symlink/file"; char actualpath [PATH_MAX+1]; char *ptr; ptr = realpath(symlinkpath, actualpath);