Как конвертировать абсолютный путь в относительный в Linux

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

Я думал, что поиск подстроки относительного пути, но что, если он уже существует выше в иерархии папки?

Вот более конкретное описание того, что я хочу сделать: Относительный путь:

 folder/folder1/folder2

Абсолютный путь:

/home/giorgos/Desktop/folder/folder1/folder2/a.pdf

изменился на

/home/giorgos/Desktop/myfolder/folder1/folder2/a.pdf

Очевидно, я не могу просто найти и заменить «folder /», рассмотрим этот случай:

/home/giorgos/Desktop/folder/folder/folder/folder1/folder2/a.pdf

Его можно искать как в прямом, так и в обратном направлении, и если его заменить, он все равно дает неправильный вывод. Только если бы я знал относительный путь, я мог бы искать абсолют и назад и заменить его, тогда вывод был бы правильным:

   /home/giorgos/Desktop/folder/myfolder/folder/folder1/folder2/a.pdf

Ответы на вопрос(3)

Ваш ответ на вопрос