Question

Comment obtenir le chemin absolu pour un chemin relatif donné par programmation sous Linux?

Encas de Windows, nous avons l'API _fullpath(). En d'autres termes, je veux dire ce qui est analogue à l'API _fullpath de Windows sous Linux?

Était-ce utile?

La solution

Comme mentionné Paul, utilisez realpath(). S'il vous plaît noter cependant, que de nombreux systèmes de depuis fichiers dans le support Linux liens durs , un répertoire donné peut avoir une nombre de différents chemins absolus.

Autres conseils

Consultez la realpath fonction.

#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; 
} 

realpath :

$ man realpath

Il est également disponible dans BSD, OS X, et al.

Il est realpath de stdlib.h

sur Redhat 5.3, ne realpath existe pas, mais readlink est installé. Vous pouvez l'utiliser sur des chemins relatifs et les liens symboliques, plus il va résoudre les liens symboliques récursive pour vous. Il est donc une meilleure option que realpath à mon avis

readlink -f .

est aussi une autre façon utile, comme "readlink -m $ filename"

D'abord, il fonctionne sans exigence pour le fichier cible existe. En second lieu, il traitera des liens symboliques et obtenir le chemin vraiment réel.

// 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();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top