В Mac OS X вы можете получить путь к каталогу, если он доступен, используя fcntl(dirfd, F_GETPATH, dirpath)
; dirpath
должен иметь размер MAXPATHLEN
или больше. Если предоставленный путь является относительным, вы можете добавить "/"
и указанный путь к пути каталога. Тем не менее, это может привести к строке, которая длиннее MAXPATHLEN
.
Другой способ сделать это - использовать fchdir()
, чтобы изменить свой рабочий каталог на этот каталог, а затем напрямую использовать относительный путь. Конечно, это изменит текущий каталог вашего процесса. При необходимости вы можете сначала сохранить его, открыв исходный текущий каталог "."
, а затем снова использовать fchdir()
с этим дескриптором сохраненного файла после восстановления исходного текущего каталога. Однако это все еще может быть проблемой, если ваша программа многопоточная, а другие потоки зависят от текущего каталога.