Как получить абсолютный путь для данного относительного пути программно в Linux?
Как получить абсолютный путь для данного относительного пути программно в Linux?
В случае Windows у нас есть _fullpath() API. Другими словами, Я имею в виду, что такое аналогичный API для _fullpath Windows в Linux?
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