Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

Проверьте 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; 
} 

Ответ 3

Попробуйте realpath:

$ man realpath

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

Ответ 4

Существует realpath от stdlib.h

Ответ 5

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

readlink -f .

Ответ 6

Еще один полезный способ, например "readlink -m $filename"

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

Ответ 7

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