如何在Unix上将相对路径转换为C中的绝对路径?这有一个方便的系统功能吗?
在Windows上有一个GetFullPathName
功能可以完成这项工作,但我在Unix上找不到类似的东西......
使用realpath().
该
realpath()
函数应从指向的路径名派生出file_name
一个名称相同文件的绝对路径名,其分辨率不涉及.
",..
",或符号链接.生成的路径名应存储为{PATH_MAX}
指向的缓冲区中以空字符结尾的字符串,最多为字节resolved_name
.如果
resolved_name
是空指针,则行为realpath()
是实现定义的.
以下示例为symlinkpath参数标识的文件生成绝对路径名.生成的路径名存储在actualpath数组中.
#include... char *symlinkpath = "/tmp/symlink/file"; char actualpath [PATH_MAX+1]; char *ptr; ptr = realpath(symlinkpath, actualpath);