Como converter caminho absoluto para relativo em c linux

Gostaria de saber como um caminho absoluto de um link simbólico pode ser convertido em parente com base em um determinado diretório (que inclui o arquivo vinculado) na linguagem c no sistema operacional Linux (Ubuntu

ensei em procurar a sub-string do caminho relativo, mas e se ele já existir mais na hierarquia da past

Aqui está uma descrição mais específica do que eu quero fazer: Caminho relativo:

 folder/folder1/folder2

Absolut path:

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

changed to

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

Obviamente eu não posso simplesmente procurar e substituir "folder /", considere este caso:

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

Pode ser pesquisado para frente e para trás e, se substituído, ainda gera uma saída incorreta. Somente se eu soubesse o caminho relativo, poderia procurar o absoluto para trás e substituí-lo, a saída estaria correta:

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

questionAnswers(6)

yourAnswerToTheQuestion