POSIX имеет realpath()
.
#include <stdlib.h>
char *realpath(const char *filename, char *resolvedname);
ОПИСАНИЕ
Функция realpath () выводит из пути, на который указывает имя файла , абсолютный путь, в котором указан тот же файл, разрешение которого не включает ".", ".." или символические ссылки. Сгенерированный путь сохраняется максимум в байтах {PATH_MAX} в буфере, указанном resolvedname .