c - 获取符号链接(symbolic link)的真实路径

标签 c linux

假设我想获取符号链接(symbolic link)的真实路径。我知道 readlinkstat 系统调用都可以取消对链接的引用并为我提供它的真实路径。它们是否以相同的方式运行(仅关于取消引用,我知道 stat 做的更多)?我应该更喜欢其中之一吗?

最佳答案

使用stat()告诉您任何符号链接(symbolic link)链末尾的文件;它不会以任何方式为您提供路径。使用 lstat() 获取有关所引用的符号链接(symbolic link)的信息(如果有);当给定的名称不是符号链接(symbolic link)时,它的行为类似于 stat()。使用 readlink()获取存储在作为其参数命名的符号链接(symbolic link)中的路径名(注意——它不会空终止字符串)。

如果你想要符号链接(symbolic link)末尾的文件的完整路径名,你可以使用 realpath() .这为您提供了一个绝对路径名,它不会通过任何符号链接(symbolic link)到达文件。

关于c - 获取符号链接(symbolic link)的真实路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159662/

相关文章:

c++ - 使用 gdb 调试 chroot 程序

linux - Ubuntu 15.10 32 位上的 Docker(操作系统和处理器)

c - 为什么 C 中同时存在 % 和 fmod()

创建不是从零开始的随机 float

c - 编译并发 YACC 程序时出错

c - 为什么calloc指针类型是void *?

c - 错误 : typedef redefinition with different types ('unsigned short' vs '__darwin_size_t' (aka 'unsigned long' ))

django - 如何设置 uWSGI vassal 名称以获得更好的日志引用?

c - 如何从文件描述符获取 FILE* 流?

python - Scrapy - 我在哪里可以在 Linux Ubuntu E4.5 上找到它