Как получить абсолютный путь к файлу или директории, который делает * not * exist?

Как определить абсолютный путь файла или каталога из заданного относительного пути в C / C ++ на GNU / Linux?
Я знаю о realpath() , но он не работает с несуществующими файлами.

Предположим, что пользователь вводит ../non-existant-directory/file.txt , а рабочий каталог программ – /home/user/ .
Мне нужна функция, которая возвращает /home/non-existant-directory/file.txt .

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

    Попробуйте realpath . Если это не удается, начните удалять компоненты пути с конца по одному и повторите realpath пока она не удастся. Затем добавьте компоненты, которые вы удалили, на результат успешного вызова realpath .

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

    Другим подходом было бы сначала создать файл, а затем вызвать realpath .