Документация по LinuxLinuxDoc.Ru 🔍

realpath - возвращает приведенное к обычному виду полное имя файла

НАЗВАНИЕ
realpath - возвращает приведенное к обычному виду полное
имя файла

СИНТАКСИС

#include
#include

char *realpath(const char *path, char *resolved_path);

ОПИСАНИЕ
realpath распознает все символьные ссылки, удлиняет записи
типа '/./', '/../' (включая ведущий символ '/' в строке
path символов, завершенных нулем) и сохраняет приведенное
к нормальному виду полное имя файла в буфере размера
PATH_MAX , указанном в resolved_path. В результате путь
не имеет ссылок и компонентов '/./' или '/../'.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Если не произошло никаких ошибок, возвращается указатель
на resolved_path. Иначе возвращается указатель на NULL и
содержимое массива resolved_path не определяется.
Глобальная переменная errno указывает на код ошибки.

КОДЫ ОШИБОК
EACCES - запрещено чтение или поиск для компонента,
содержащегося в пути;

EINVAL - одна из величин path или resolved_path равна NULL
(в libc5 это просто вызывает ошибку segfault);

EIO - ошибка ввода-вывода при чтении из файловой
системы;

ELOOP - слишком много символьных ссылок в транслируемом
пути;

ENAMETOOLONG
- компонент имени в пути содержит более NAME_MAX
символов или компонент пути содержит более PATH_MAX
символов);

ENOENT - указанный файл отсутствует;

ENOTDIR
- компонент пути - это не каталог.

НАЙДЕННЫЕ ОШИБКИ
Реализации libc4 и libc5 содержат ошибку, вызывающую
переполнение буфера (исправлено в libc-5.4.13). Так что
suid-програмы, такие, как mount, нуждаются в собственной
версии.

ПРЕДЫСТОРИЯ
Функция realpath впервые появилась в BSD 4.4,
распространяемой Jan-Simon Pendry. В Linux эта функция
появилась в libc 4.5.21.

СООТВЕТСТВИЕ СТАНДАРТАМ

В BSD 4.4 и Solaris максимальная длина пути равна MAX-
PATHLEN (находится в ). SUSv2 описывает
PATH_MAX и NAME_MAX, находящиеся в и
определяемые функцией pathconf() . Вот типичный фрагмент
кода:

path_max = PATH_MAX;
path_max = pathconf (path, _PC_PATH_MAX);
if (path_max <= 0)
path_max = 4096;

Версии BSD 4.4, Linux и SUSv2 всегда возвращают абсолютное
полное имя. Solaris может вернуть относительное имя, если
аргумент path относителен. Прототип realpath определен в
файле libc4 и libc5, а в других системах - в
файле .
Читать новости Linux в Telegram
Linux - realpath - возвращает приведенное к обычному виду полное имя файла
Мы в соцсетях ✉