Как получить полный путь для заданного относительного пути программно в 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;
}
работает на 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();
}