web-dev-qa-db-fra.com

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

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

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

16
Jay

Comme Paul l'a mentionné, utilisez realpath(). Veuillez noter cependant que puisque de nombreux systèmes de fichiers sous Linux prennent en charge liens durs , tout répertoire donné peut avoir un certain nombre de chemins absolus différents.

17
unwind

Découvrez la fonction realpath .

#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; 
} 
14
Martin Wickman

Essayez realpath :

$ man realpath

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

6
Paul R

Il y a la realpath from stdlib.h

3
Otto Allmendinger

En cours d'exécution sur RedHat 5.3, realpath n'existe pas mais readlink est installé. Vous pouvez l'utiliser sur des chemins relatifs et des liens symboliques. De plus, il résoudra les liens symboliques de manière récursive pour vous. C'est donc une meilleure option que realpath à mon avis

 readlink -f. 
1
Lionel

Le est aussi un autre moyen utile, comme "readlink -m $ filename"

Tout d'abord, cela fonctionne sans qu'il soit nécessaire que le fichier cible existe. Deuxièmement, il gérera les liens symboliques et obtiendra un chemin vraiment réel.

0
Zebooka