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?
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.
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;
}
Il y a la realpath
from stdlib.h
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.
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.