如何获取文件或目录的绝对路径,*不存在?

Fab*_*nze 14 c file-io file relative-path absolute-path

如何在GNU/Linux上的C/C++中从给定的相对路径确定文件或目录的绝对路径?
我知道realpath(),但它不适用于不存在的文件.

假设用户输入../non-existant-directory/file.txt,程序工作目录是/home/user/.
我需要的是一个返回的函数/home/non-existant-directory/file.txt.

我需要此函数来检查给定路径是否在某个子目录中.

R..*_*R.. 11

试试realpath.如果失败,则一次开始从一端删除路径组件并重试,realpath直到成功为止.然后将您删除的组件追加到成功realpath调用的结果上.

如果您确定包含目录存在并且您只想在那里创建文件,则只需删除最多一个组件.

另一种方法是首先创建文件,然后调用realpath.

  • @Timmmm:在调用“realpath”(或自己重新实现它)之前您无法解析它们,因为您不知道“..”之前的组件是否是符号链接。您只需按照我的答案中的过程(如果可能存在)在尾部*之后*应用“..”组件即可。 (2认同)