Как получить абсолютный путь для данного относительного пути программно в Linux?



Как получить абсолютный путь для данного относительного пути программно в Linux?



В случае Windows у нас есть _fullpath() API. Другими словами, Я имею в виду, что такое аналогичный API для _fullpath Windows в Linux?

705   7  

7 ответов:

Как упоминал Павел, используйте realpath(). Обратите внимание, однако, что поскольку многие файловые системы в Linux поддерживаютжесткие ссылки , Любой данный каталог может иметь несколько различных абсолютных путей.

Проверьте функцию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; 
} 

Try realpath :

$ man realpath

Это также доступно в BSD, OS X и др.

Существует realpath из stdlib.h

Работает на RedHat 5.3, realpath не существует, но readlink установлен. Вы можете использовать его на относительных путях и символьных ссылках, плюс он будет разрешать символьные ссылки рекурсивно для вас. Таким образом, это лучший вариант, что realpath на мой взгляд

readlink -f .

Это также еще один полезный способ, как "readlink-m $filename"

Во-первых, он работает без необходимости существования целевого файла. Во-вторых, он будет обрабатывать символьные ссылки и получать действительно реальный путь.

// 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();
}

Comments

    Ничего не найдено.