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

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

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

7 ответов


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


Проверьте реального пути.

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

попробовать реального пути:

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